Method of enabling digital music content to be downloaded to and used on a portable wireless computing device

ABSTRACT

The invention enables digital music content to be downloaded to and used on a portable wireless computing device. An application running on the wireless device has been automatically adapted to parameters associated with the wireless device without end-user input (e.g. the application has been configured in dependence on the device OS and firmware, related bugs, screen size, pixel number, security models, connection handling, memory etc. This application enables an end-user to browse and search music content on a remote server using a wireless network; to download music content from that remote server using the wireless network and to playback and manage that downloaded music content. The application also includes a digital rights management system that enables unlimited legal downloads of different music tracks to the device and also enables any of those tracks stored on the device to be played so long as a subscription service has not terminated.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. application Ser. No.12/299,505, filed May 20, 2009, which claims the priority ofPCT/GB2007/001675, filed on May 8, 2007, which claims priority to GB0608936, filed May 5, 2006, GB 0608935, filed May 5, 2006, GB 0608934,filed May 5, 2006, GB 0608933, filed May 5, 2006, GB 0608932, filed May5, 2006, and GB 0702596, filed Feb. 9, 2007, the entire contents ofwhich are hereby incorporated herein by reference.

BACKGROUND OF THE INVENTION

1. Field of the Invention

This invention relates to a method of enabling digital music content tobe downloaded to and used on a portable wireless computing device. Theterm ‘portable wireless computing device’ used in this patentspecification should be expansively construed to cover any kind ofportable device with two way wireless communication capabilities andincludes without limitation radio telephones, mobile telephones, smartphones, communicators, personal computers, computers and applicationspecific devices. It includes devices able to communicate in any mannerover any kind of network, such as GSM or UMTS, CDMA and WCDMA mobileradio, Bluetooth, IrDA etc.

2. Description of the Prior Art

The past few years have seen enormous changes in the way music isdistributed and consumed. The traditional method, where the consumerbuys a physical product in a shop and listens to it at home, hasdeclined, and total worldwide revenue for the music industry has droppedfrom a little under $40bn in 2000 to $31bn in 2005. Meanwhile there hasbeen an enormous upsurge in the distribution of digital music over theinternet, initially in the form of illegal file sharing, but latterlymore and more as paid for downloads. Portable digital audio players(DAPs), exemplified by the Apple iPod™, have had a dramatic effect onthe global music marketplace. Just five years after the introduction ofthe first portable digital audio player, digital music sales global havealready grown to well over $5bn in 2005.

To reverse these trends, the music labels are now turning theirattentions to pursuing the mobile market, where music is sold via mobilephones (or other kinds of portable wireless device) and distributed overthe cellular wireless network. The potential value is already clear fromthe explosive growth of the ringtone market, and both the music labelsand mobile network operators MNOs believe that mobile full-track musiccould provide more revenue, better security and improved pricingcompared to digital music on a PC.

The mobile phone has some distinct advantages over the iPod and otherDAPs. As well as playing music, mobile phones are connected to anincreasingly fast, secure wireless network where users can locate andshare music on the move and pay for content using the MNO's inbuilt andconvenient billing facilities. Increasing innovation from the mobilehandset manufacturers is helping to move the market forward.

There are still significant challenges ahead, however. The reliance onmobile internet technology WAP (Wireless Application Protocol) as theprimary means of selling full music content is limiting. The technologyis unfriendly, slow and cumbersome for users. Indeed, the worlds largestmobile phone group, Vodafone Global, has avoided selling full musicdownloads on anything but top-of-the-range 3G phones because of theend-user difficulties associated with WAP. Many other operators havebeen forced to take a similar approach. This has limited the take-up offull music download services—only a small minority of mobile phonesubscribers can use or have access to 3G. In the relatively mature 2005UK market, less than half a million of Vodafone's 14.4 million customershave 3G—a market penetration of around 3%. Many other operators have noor only very limited 3G penetration.

MNOs are also concerned about the poor music play experience available,even on current top-of-the-range 3G handsets. Even when devices aremarketed as top-of-the-range music phones they generally fail to delivera user experience akin to a run-of-the-mill MP3 player.

Two alternatives to WAP based acquisition of full music content arecurrently favoured:

-   -   Streamed services, which offer users a personalised radio        service streamed to their handset.    -   Music shop applications, running locally on a mobile telephone,        and which offer users the ability to purchase music tracks and        albums directly from the mobile telephone

Streaming radio solutions are however a niche marketplace. Therequirement for a constant data connection and the lack of full usercontrol of what a user listens to means the consumer proposition andappeal is limited. Streaming solutions also suffer limited handset reachand a requirement for high speed (usually 3G) data connection. Operatorsimplementing such services must also plan and invest for a significantnetwork burden—all music tracks must be redownloaded every time they areplayed.

Music shop applications offer a more compelling user proposition butalso suffer limited handset reach, with a focus on 3G and niche Symbianhandsets. The user experience on such devices is also limited currentlywith competitor products offering only limiter pay per track servicesand with limited functionality that fails to approach the richness of ahigh quality DAP. This limited functionality, combined with relativelysmall music catalogues, has severely limited the appeal of thesesolutions to date.

SUMMARY OF THE PRESENT INVENTION

The present invention provides a mature, reliable and convenientsolution which will enable users to easily acquire, listen to and managemusic on portable wireless computing devices.

An implementation is called MusicStation™. MusicStation provides amethod of enabling digital music content to be downloaded to and used ona portable wireless computing device, the method comprising the stepsof:

(a) a software application running on the wireless device, theapplication having been automatically adapted to parameters associatedwith the wireless device without end-user input;

(b) the application enabling an end-user to browse and search musiccontent on a remote server using a wireless network; to download musiccontent from that remote server using the wireless network and toplayback and manage that downloaded music content;

(c) the application including a digital rights management system thatenables unlimited legal downloads of different music tracks to thedevice and also enables any of those tracks stored on the device to beplayed so long as a subscription service has not terminated.

This invention has the promise of being genuinely transformative of theway people acquire and listen to digital music. It brings together, forthe first time, a number of technologies which operate synergisticallyto provide a total solution that is significantly greater than the sumof its parts. For example, because the application can be automaticallyadapted to parameters associated with the wireless computing devicewithout end-user input, it becomes feasible to automatically provisionvery large numbers of portable wireless devices with the application(either prior to sale, or to allow users to download and install theapplication—e.g. by simply giving a remote server the correct portablewireless device make and model number). The installed base of mobiletelephones, for example, could therefore readily run into the tens, ifnot hundreds of millions—far larger than any DAP. The application alsoenables an end-user to browse and search music content on a remoteserver using a wireless network; to download music content from thatremote server using the wireless network and to playback and manage thatdownloaded music content: hence, not only will the installed basegreatly exceed any DAP solution, the functionality will be better thanany DAP because it will be possible to search and acquire new musicdirectly from the device over the wireless network (this is a far morenatural process than acquiring music via a web based on-line catalogueusing a desktop machine and then synching a DAP with the desktopmachine). Finally, the application includes a digital rights managementsystem that enables unlimited legal downloads of different music tracksto the device and also enables any of those tracks stored on the deviceto be played so long as a subscription service has not terminated. Thisallows users to explore new music far more effectively than before and,with rapidly decreasing memory costs, to store thousands of music trackson even mid-range devices. Music companies will be willing to makeentire catalogues of music available because of the robust DRM model,the huge installed user base and the ease of exploring and acquiring newmusic. This creates a positive feedback, with more and better contentattracting more users, in turn attracting more content.

MusicStation has a number of key advantages over its competitors:

-   -   A comprehensive and intuitive user experience that wraps all        music functions;    -   Compatibility with a wider range of handsets than any        competitor, as a result of the Device Adaptive Architecture        (DAA—see below for more details), which ensures the software        application runs on almost all music-capable handsets        (irrespective of model or manufacturer) and looks and operates        in a practically identical fashion on all of them.

MusicStation maximises the benefits of the mobile phone. Unlike DAPs,where music can only be acquired in the home, MusicStation users candiscover and acquire new music anywhere;

-   -   MusicStation does not need a PC, broadband, iTunes or a credit        card to work.    -   MusicStation supports innovative new models like AYCE        (all-you-can-eat—i.e. unlimited downloads) and user community        features such as making friends and sharing playlists.        The MusicStation Product

MusicStation is designed to be the key enabling technology that willenable the mass-adoption of the mobile phone as the successor to theunconnected Digital Audio Player (DAP). To ensure success, the designand development team have focused on the following key requirements inorder to deliver a next generation mass-market music product:

A User Experience that Beats the Best DAP

The traditional native player on mobile phones has been second rate whencompared to the best DAPs. MusicStation provides an interface that is ascomplete as any market-leading DAP but which is also optimised for thebenefits of a connected device.

Maximising the Benefits of Connectivity

The mobile phone is an “Almost Always Connected” (AAC) device, so ahandset-based music product can enable music purchasing directly when onthe move, not just when it is physically attached to aninternet-connected PC.

Ensuring No Reliance on a PC

An integrated handset product should not require the user to own abroadband-connected PC at all. This is particularly key in developingmarkets where mobile phone users do not generally have access to suchtechnology, nor indeed a credit card. Where users do have access to a PCthey should be able to access music and playlists whether they are attheir desk or on on-the-move—but there should be no reliance on personalcomputer, broadband or credit card technology.

Enabling Direct Billing

A mobile music application should be able to leverage on the billingrelationship between the consumer and the MNO. By providing a much moreconvenient one-touch billing method for content purchase—irrespective oflocation—music sales can be truly maximised, especially compared with anat-desk, web-based credit card application, with a cumbersomeregistration process which also requires a difficult synchronisationrequirement with the portable device.

Enabling Wire-free Listening

An on-handset music application must be able to use the Bluetoothfunctionality available in many mobile handsets to allow music to beplayed and shared with other Bluetooth enabled devices such as wirelessheadphones, in-car stereos and hi-fi systems.

Taking Advantage of 24×7 Availability

The mobile phone is the electronic device most likely to be present witha user 24/7, giving a far wider opportunity for consumer interaction, bethat listening, purchasing or the managing of music. It is thereforeimportant that a music application is designed to be attractive and easyto use, even to subscribers who stumble across it accidentally whilstexploring handset functionality for the first time.

Giving Users Community Features

As an Almost Always Connected (AAC) device, the mobile phone can delivercommunity interaction features on-the move, the key to enabling improvedconsumer music discovery through shared playlists and playlist chartsgenerated by users. This is a key advantage over the unconnected DAP.

Making the most of a Fortuitous Handset Roadmap

The vast majority of handsets will be music capable by Q1 2007—even ifthey are not actively promoted or branded as a music phone by the MNO ormanufacturer. To maximise revenue potential, any music applicationshould be available for every music-capable handset, be it 2.5G or 3G,whatever the manufacturer, enabling MNOs to consider full download musicas a mass market opportunity for the first time.

MusicStation has been designed around these key requirements. The endresult genuinely able to turn the vast majority of music-capablehandsets into “Super-DAPS”. Critically, MusicStation gives all theperformance and user experience quality of a DAP (in terms of musicplaying and management), whilst also offering all the browse, search,acquire, playlist and celebrity playlist features of leading PC basedon-line music stores. On top it offers music users tribal communityfeatures, which can improve their music discovery process—andpersonalised news and views (neither of which are available on any DAP).

Other key features include:

-   -   A single user intuitive interface which wraps all music        play/playlist management/content acquisition/news/community        functionality;    -   Availability of all functions available during music playback        (news acquisition, searching/browsing, etc);    -   Intelligent Parallel Downloading technology, allowing for        intelligent caching of favourite content;    -   Inbuilt network awareness (Features and interface intelligently        adapt depending on level of network connectivity available—3        G/2.5 G/OG);    -   Direct billing integration (enabling extremely convenient        one-touch billing without the requirement for a credit card or        account)—billing infrastructure for the subscription service is        part of the billing infrastructure provided by a network        operator that controls the wireless network;    -   Industry standard music file protection by DRM. The DRM also        enables the purchase of a music track such that the track can        still be played if the subscription service is terminated.

Being a connected application, unlike DAPs, MusicStation is able tooffer an All-You-Can-Eat (AYCE) weekly or daily subscription packagedirectly from the handset for the first time. There is much evidencethat the average music revenue per AYCE subscriber is substantiallyhigher than that from a traditional PPT (pay per track) user. To datemost AYCE implementations have been desktop-based subscriptions ratherthan being sold on a connected mobile device.

Device Adaptive Architecture (DAA)

One of the biggest problems for mobile applications to date has been thedifficulty of porting applications onto new handsets and deliveringapplications that work across multiple handset manufacturers and models.Resolving this challenge is one of the most important technicaldifficulties that MusicStation addresses. Device Adaptive Architecture(DAA) is the solution.

In essence, DAA enables MusicStation to be deployed on more mobilephones than any competitor. It is also enables MusicStation to ported tonew handsets in hours rather than weeks or months—with the creation of amanufacturer and handset model specific version of the application ineach case.

Until DAA, all mobile applications—be they music-specific or moregeneralised—suffered limited handset reach. Typical obstructionsincluded:

-   -   Manufacturer variations in handset design/memory capabilities;    -   OS and firmware release and related bugs;    -   Screen size, pixel number, colour depth, keypad control and        softkey variations;    -   Physical size;    -   Media file and format support (e.g. audio, picture, video,        animation);    -   Java version and platform implementation differentials;    -   Handset-specific security models;    -   Connection handling and capabilities;    -   Failure to adhere to published specifications;    -   Computing horsepower and other computational resources.    -   Memory    -   Network capabilities and handling of the device, including one        or more of CSD, GPRS, 2G, 2.5G, 3G, WAP, SMS, Bluetooth,        Infrared, Wi-Fi, WiMAX.

In essence, features vary wildly by handset and by manufacture rand alsonetwork operator—and many handsets may suffer bugs in theirimplementation. Device Adaptive Architecture (DAA) resolves these issuesand enables the product to be ported automatically to the vast majorityof all music-capable 2.5G and 3G handsets in record time. DAA capturesparameters associated with these various features and allows anapplication to be automatically custom built for a specifichandset/network operator combination without end-user input. Furtherdetails on DAA may be found in WO 2006/061595, the contents of which areincorporated by reference.

It is also critically important to note that MusicStation's referenceplatform is Java. A few competitive products have been built on theeasy-to-address Symbian platform. Whilst it is relatively easy to buildapplications for this platform, it does not offer the opportunity for amass-market music proposition. Less than 10% of handsets globally haveSymbian on board and many of those are business-focused handsets. Javais the most widely adopted mobile platform and critical to handsetreach. It is available on almost all medium and high end handsets. Thecombination of Java and DAA technology means MusicStation can bedelivered to more consumers than any other technology—and criticallyact, look and feel almost identical irrespective of manufacturer ormodel. MusicStation will be available in Java, Symbian, Windows Mobile,Linux and BREW.

Other features include the following:

-   -   the application present a graphical user interface in which        shows multiple user-selectable tabs, each tab being associated        with a core function of the application.        -   each tab is visible at any time the application is running        -   one tab is associated with a home function that provides            access to all available content and to a search function        -   one tab, if selected, gives details of the track that is            currently playing        -   one tab, if selected, provides access to community and news            features.        -   one tab, if selected, displays the current queue of tracks            for listening and/or downloading.    -   the application present a graphical user interface in which        multiple screens show a ‘more’ menu item that is context        sensitive and, if selected, provides access to further functions        relevant to a currently selected item and/or the currently        displayed screen.    -   the application is controlled using a multi-tasking context        sensitive joystick; the specific function of the joystick is        shown by an on-screen icon above it. The operation of the        joystick is replicated by numeric keys in the keypad, e.g. the        numeric key 5 is up; 0 is down; 7 is left and 9 is right.    -   the application provides a context appropriate acquire function        in which a function equivalent to ‘Get New Artist’ is at the        same level in the menu as ‘Artist’. A function equivalent to Get        New Track is on the same level in the menu as the menu listing        of tracks for an artist.    -   the application enables one device to act as a master playback        device such that other wirelessly connected portable wireless        devices playback the same music track, in time synchronisation.        The wireless connection can be a short range wireless        connection, such as Bluetooth.    -   the application provides a dedicated ‘play’ numeric key which        always toggles back to the play screen, which shows the track        currently being played.    -   the application provides variable timeouts, with different        screens have different timeouts—e.g. a search screen never snaps        back but a news screen snaps back after 20 seconds, compared        with a standard navigation screen, that might snap back after 7        seconds.    -   the application displays targeted news filtered according to the        end-user's playback habits.    -   the application tracks, and feeds back to a remote server,        detailed end-user listening data. The data includes how long        tracks have been listened to, what tracks are skipped through        and when. The data can be locally cached on the device and then        sent back to the server as a piggyback over a communication that        happens anyway. The device will pre-emptively send the data back        without waiting for the communication expected to happen anyway,        only if the user has not downloaded for more than a set time.        This data can be used to enrich a music suggestion engine that        provides music track suggestions for display on the device.    -   the application displays shared playlists.    -   the application displays playlist charts generated by users    -   all functions of the application are available during music        playback.    -   the functions available during playback include news        acquisition, as well as music track search, browse, and acquire.

Another aspect is a portable wireless computing device that enablesdigital music content to be downloaded and used, the device including:

(a) a software application running on the wireless device, theapplication having been automatically adapted to parameters associatedwith the wireless device without end-user input; and in which:

(b) the application enables an end-user to browse and search musiccontent on a remote server using a wireless network; to download musiccontent from that remote server using the wireless network and toplayback and manage that downloaded music content; and(c) the application including a digital rights management system thatenables unlimited legal downloads of different music tracks to thedevice and also enables any of those tracks stored on the device to beplayed so long as a subscription service has not terminated.

A third aspect is a software application that enables digital musiccontent to be downloaded and used on a portable wireless computingdevice;

(a) the application running on the wireless device, the applicationhaving been automatically adapted to parameters associated with thewireless device without end-user input; and in which:

(b) the application enables an end-user to browse and search musiccontent on a remote server using a wireless network; to download musiccontent from that remote server using the wireless network and toplayback and manage that downloaded music content; and(c) the application including a digital rights management system thatenables unlimited legal downloads of different music tracks to thedevice and also enables any of those tracks stored on the device to beplayed so long as a subscription service has not terminated.

A final aspect is a music track that has been downloaded using thesoftware application defined by the third aspect.

Definitions

Mobile Telephone: A type of telephone which is connected to thetelephone network via wireless technology through the air rather thanthrough a physical wire or other physical connection or form of cable.

Mobile Phone, Phone, Mobile, Mobile Handset or Handset: A type of MobileTelephone.

Mobile Network: A network which provides wireless connectivity forMobile Telephones so that they can operate and provide functions such asmaking telephone calls or accessing network-resident data or services.

Mobile Network Operator (MNO): A company or organisation which operatesa Mobile

Network and the subscribers or users who use Mobile Telephones on thatnetwork. Global Mobile Network or Mobile Phone Network: The sum of allMobile Networks operated by Mobile Network Operators in the world.

Wireless Network: A network which provides wireless connectivity toclient computing devices. Such a network includes Wi-Fi, WiMAX and theGlobal Mobile Network.

Server: A networked computing device which exists to provide networkedapplication services, features and functions such as information supply,database search and transactions to one or more client computing deviceswhich make connection to it and make requests for services from it.There are generally many clients to each server and each client isusually of a smaller size and of smaller computing capability than theserver.

Services: The networked computing services, features and functions whichare typically provided by a Server to one or more network connectedclient computing devices. Services include information supply, databasesearch and transactions. Such services are architecturally practical todeploy centrally in the network and typically impractical to deploy on aclient computer due to the client's size and power.

Client: A computing device connected to a network delivering thefeatures and functions of a network-centric application to the user orconsumer of the application. The Client typically connects to a Serverand requests Services.

Network Application: A type of application or service that isnetwork-centric, in that it is delivered by a combination of softwarerunning on a Client performing the function of the application'sinterface to the end user or consumer, supported and complemented byServices provided by software on a Server which are accessed by theClient over a network.

Wireless Computing Device: A type of Client which connects to thenetwork via a Wireless Network. Such devices include Mobile Telephones,Personal Digital Assistants (PDAs), Games Consoles (e.g. Sony PSP) orother wirelessly network connected client computing devices. The type ofthe Wireless Computing Device is further defined by it's Manufacturer,Make, Version, Operating System, Firmware Version.

Wireless Device or Wireless Client: A type of Wireless Computing Device.

Software Application: The Client software application which is to bedelivered over-the-air to, or pre-installed on, the Wireless ComputingDevice.

Software Components Individual units of software which form thecomponents of the Software Application which is being customised for theWireless Computer Device and part of the Device Adaptive Architecture(DAA) software library.

Mobile Content: Digital files and data representing electronic productsused by, consumed, played, viewed or rendered on Mobile Phones. Examplesinclude ringtones/ring tunes, wallpapers/pictures,screensavers/animations, realtones/truetones, full music downloads,video, SMS & MMS alerts, mobile games, and many other current andemerging Mobile Phone consumable entertainment and information products.

Metadata: Individual items of data or collections of data, potentiallyhierarchically related, which describe the attributes or behaviour ofWireless Computing Devices, Wireless Networks, Software Components,Network Applications or Mobile Content.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a Scheduler class diagram.

FIG. 2 is Client Schedules a task.

FIG. 3 is UI thread adds a task to the queue.

FIG. 4 is an example of a binary heap.

FIG. 5 is Binary heap stored in an array.

FIG. 6 is State diagram for a Task.

FIG. 7 is cache upper and lower limits for each type of data objects.

FIG. 8 is Data objects used to configure exceptions.

FIG. 9 is Device specific exception.

FIG. 10 is Screen Captures—Get new . . . option.

FIG. 11 is Personalised Menu Item and Recommendations Contained.

FIG. 12 is Screen capture—rating an item.

FIG. 13 is Screen capture—News.

FIG. 14 is Screen capture—Buzz member recommendations.

FIG. 15 is Personalised Menu Item and Recommendations Contained for CoolMembers and Buzz Playlists.

FIG. 16 is a matrix of correlations between tracks.

FIG. 17 is a Weightings Matrix.

FIG. 18 is a set of normalized weightings lying between 0 and 1.

FIG. 19 is an Associated Artists Matrix, which is a matrix ofcorrelations representing how strongly associated pairs of Artists arein the system, based on ratings, and customer plays.

FIG. 20 is an Associated Customers Matrix, which is a matrix ofcorrelations representing how strongly associated pairs of Customers arein the system, based on ratings, and customer plays.

FIG. 21 is part of a Table of Associations Matrix property, Inputs toRecommendation and Results Mechanism.

FIG. 22 is part of a Table of Associations Matrix property, Inputs toRecommendation and Results Mechanism.

FIG. 23 is part of a Table of Associations Matrix property, Inputs toRecommendation and Results Mechanism.

FIG. 24 is part of a Table of Associations Matrix property, Inputs toRecommendation and Results Mechanism.

FIG. 25 is part of a Table of Associations Matrix property, Inputs toRecommendation and Results Mechanism.

FIG. 26 is Calculating the implicit rating value.

FIG. 27 is Properties of a message.

FIG. 28 is Properties of an image.

FIG. 29 is Properties of the client version.

FIG. 30 is Translated messages.

FIG. 31 is Device Message properties.

FIG. 32 is Device Message/Help Message properties.

FIG. 33 is Service Messages.

FIG. 34 is Service and Device Specific Messages.

FIG. 35 is Client Build message.

FIG. 36 is Screen capture—Roaming options.

FIG. 37 is configurations of the Roaming behaviour for MusicStation.

FIG. 38 is Screen capture—Roaming Warnings.

FIG. 39 is Screen capture—Roaming Warnings—Ask prompt.

FIG. 40 is Screen capture—Roaming Warning—Ask prompt.

FIG. 41 is Screen capture—Roaming Options set to On.

FIG. 42 is Screen capture—Roaming Options set to Off.

FIG. 43 is shows the title, content and result of the responses.

FIG. 44 is Request/response flow between client and server.

FIG. 45 is Server sending a request to the client.

FIG. 46 is details of [major].[minor].[micro], Variant name and Platformidentifier.

FIG. 47 is details of error data.

FIG. 48 is an example of the client sending error data to the server.

FIG. 49 is an example of the client sending error data and a photo tothe server.

FIG. 50 is an example of the server sending a Jpeg photo with a singleparameter.

FIG. 51 is status codes.

FIG. 52 shows the server sending the news1.data file.

FIG. 53 shows the server sending the news2.data and news3.data files.

FIG. 54 is the server response which indicates which range of data hasbeen sent

FIG. 55 is the server sending a Sent line that the client had not sent acorresponding Get line in the request.

FIG. 56 shows that Artist data object which contains a collection ofReleases. In turn, a Release contains a collection of Tracks.

FIG. 57 shows that an alternative method is to store each collection ofobjects in its own file. So in our ‘My Artists’ example the list ofArtists is stored in a file (userartists.data) but the list of albumsfor each artist is not. The list of albums is stored in a separateartist file, one for each artist (e.g. artist.123.data). Each album isthen stored in its own file (release.4567.data) that contains thetracks.

FIG. 58 shows how object groups can use the same data object withouthaving to duplicate the data.

FIG. 59 shows that one can store the artist name as well as the id inthe ‘My Artists’ data file.

FIG. 60 is Client sets object and gets all modified objects.

FIG. 61 is Client requests object and gets all modified objects.

FIG. 62 is Client sends objects modified in offline mode.

FIG. 63 is object change log.

FIG. 64 is customer object.

FIG. 65 is customer object change log.

FIG. 66 is a ChangeLogRecord object.

FIG. 67 is an object_change_log table.

FIG. 68 is a customer_object_change_log table.

FIG. 69 is a Logger which contains a LogRecord for each client log.

FIG. 70 is the customer_logger table.

FIG. 71 is DRM Overview.

FIG. 72 is Service Registration Request Parameters.

FIG. 73 is MNO Added Metadata.

FIG. 74 is Service Registration Response Parameters.

FIG. 75 is MusiStation RI Registration Request Parameters.

FIG. 76 is RI Registration Response Parameters.

FIG. 77 is MusicStation RO Acquisition Request Parameters.

FIG. 78 is MusicStation RO Acquisition Response Parameters.

FIG. 79 is Content Acquisition Request Parameters.

FIGS. 80-164 are screen shots of the MusicStation implementation.

FIG. 165 is a system overview.

DETAILED DESCRIPTION

Architecture

1.1. Multi-Threading

A key aspect of the player is that it performs multiple threadssimultaneously. There are 3 main threads:

-   -   User Interface (UI) thread    -   Animation thread    -   Scheduler thread

There is also an HTTP connection thread which actually downloads dataand loads it into a buffer while the Scheduler thread reads from this soas not to be blocked by the connection.

Typically the UI thread will respond immediately to the user navigatingto a new screen by displaying that screen and scheduling a task to loadthe data behind the screen, either from the local file system orremotely over an HTTP connection.

The load task is added to the task queue. The queue is ordered by taskpriority, task type and scheduled execution time. Most tasks arescheduled for immediate execution, in which case the execution time isset to the time the task was added to the queue. Some tasks arescheduled with a small delay; for example playing a track is scheduledwith a one second delay to allow quickly skipping through the tracks ona playlist.

When a new task is added to the task queue we compare its priority tothe currently executing task (if there is one). If its priority ishigher then the current task, we attempt to cancel the current task.Only tasks that take an excessive time to complete can be cancelled.This is to avoid tasks hogging the execution thread whist other higherpriority tasks are waiting. An excessive amount of time is longer than afew seconds. The cancelled task is then rescheduled. The execution timeis set to the time the task was originally added to the queue.

1.1.1. Scheduler

The Scheduler is a facility for threads to schedule tasks for immediateor future execution in a background thread. Tasks may be scheduled forone-time execution, or for repeated execution at regular intervals.

The Scheduler object has a single background thread that is used toexecute all of the scheduler's tasks sequentially. If a scheduler tasktakes excessive time to complete, it “hogs” the timer's task executionthread. This can, in turn, delay the execution of subsequent tasks,which may “bunch up”. Any task that may take longer than a few secondsto execute must implement interrupt( ).

The interrupt( ) method is called when a task with a higher priority isadded to the task queue and will be called on the currently executingtask by the thread adding the task. The run( ) method called by thescheduler thread must throw an InterruptedException at the earliestopportunity. The Scheduler will catch this exception and then reschedulethe interrupted task for execution based on its priority and the time itwas originally added to the queue. The newly added task is then pickedup and executed.

This class is thread-safe: multiple threads can share a single Schedulerobject without the need for external synchronization. See FIG. 1:Scheduler class diagram and FIG. 2: Client Schedules a task.

1.1.1.1. TaskQueue

This class represents a scheduler's task queue: a priority queue ofTasks, ordered on priority, taskType and executionTime.

The task priorities are based on the CLDC Thread priorities. As suchthere are 3 priorities defined:

-   -   MAX_PRIORITY is the maximum priority that a task can have.    -   NORM_PRIORITY is the default priority that is assigned to a        task.    -   MIN_PRIORITY is the minimum priority that a task can have.

Tasks with the same priority are further subdivided by taskType. Forexample, this allows us schedule the data for a screen before theimages. This could be achieved by using different priorities however itis likely we'll want to lower the priority of a task (e.g. the usernavigates to a different screen) without changing the type. Byseparating the concepts of priority and taskType the design is moreflexible and I think easier to understand. Initially the 3 types orderedby importance are:

-   -   DATA is used for tasks that request object data files.    -   AUDIO is used for tasks that request audio files.    -   IMAGE is used for tasks that request image files.

The executionTime ensures that tasks with the same priority and taskTypeare executed in the order that they are added to the queue. See FIG. 3:UI thread adds a task to the queue.

Internally the queue is stored as a binary heap so the cost to schedulea task is log n, where n is the number of concurrently scheduled tasks.A large number (thousands) of scheduled tasks should present no problem.There is no cost for retrieving the next scheduled task, which is alwaysat the root. See FIG. 4: An example of a binary heap.

We always add an element to the bottom of the heap and then call thefixUp( ) method to find its place in the heap. The fixUp( ) methodcompares the added element with its parent and swaps them if they arenot in the correct order.

An array is used to store the heap and because the heap is alwayscomplete (there are never any gaps in the tree) it can be storedcompactly. No space is required for pointers; instead, for each index i,element a[i] is the parent of two children a[2i+1] and a[2i+2]. See FIG.5. Binary heap stored in an array.

1.1.1.2. Task

A task can be scheduled for one-time or repeated execution. A task canbe in one of 3 states:

-   -   SCHEDULED: This task is scheduled for execution. If it is a        non-repeating task, it has not yet been executed.    -   EXECUTED: This non-repeating task has already executed (or is        currently executing) and has not been cancelled.    -   CANCELLED: This task has been cancelled (with a call to        Task.cancel).        See FIG. 6: State diagram for a Task.

The MusicStation client uses a single Scheduler to schedule all fileconnections, either from the local file system or remotely over an HTTPconnection. The scheduler uses a single thread so all file connectionsare handled serially. A Task must ensure that it only has an openconnection when it is in the executed state. As only one task is ever inthe executed state we can guarantee that we only ever have oneconnection open. Also, any task that supports the interrupt( ) methodmust be able to resume without storing any state information about thefile it was writing to. This is important because another task may havemodified the file since the task was interrupted.

1.1.2. Use Cases

1.1.2.1. User Opens Playlists

The user opens the application and immediately opens the Playlists menu.The Playlists menu display the “My Playlists” PlaylistSet filtered usingthe two filters “My Private Playlists” and “My Public Playlists”.

When the screen is displayed a LoadTask is added to the TaskQueue toload “My Playlists”. The LoadTask.taskType is DATA and theLoadTask.priority is MAX_PRIORITY.

When the LoadTask is added to the TaskQueue, the scheduler thread, whichis waiting on the queue, is notified. It takes the task from the queueand executes it by calling the Task.run( ) method. The task checks tosee if the “My Playlists” object data file exists on the file system. Inthis case it doesn't so an HttpConnection is opened and the file is readover the stream. The file is read into a buffer (65 k) and each time thebuffer is filled it is written to the memory card and used to populatepart or all of the data object (note very few data files will be largerthan the buffer).

As the PlaylistSet data object is populated with Playlists, thesePlaylists contain image references. As each image reference is read, anImageLoadTask is created and added to the TaskQueue. TheImageLoadTask.taskType is IMAGE and the ImageLoadTask.priority isMAX_PRIORITY.

Once “My Playlists” has finished loading, the scheduler takes the firstImageLoadTask from the queue. Because the image doesn't exist on thelocal file system it is loaded over HTTP. This continues until allimages have been loaded.

1.1.2.2. User Opens Playlists and Immediately Selects New Playlists

The user opens the application and then opens the Playlists menu. Before“My Playlists” have loaded the user selects “Get New Playlists”.

As above a LoadTask is immediately added to the TaskQueue to load “MyPlaylists” when the user opens Playlists. The LoadTask.taskType is DATAand the LoadTask.priority is MAX_PRIORITY.

Before the LoadTask has finished the user selects “Get New Playlists”.This immediately calls TaskQueue.changePriority( ) to downgrade allMAX_PRIORITY tasks to NORM_PRIORITY because we are changing screens. Anyoutstanding tasks for the last screen need to have a lower priority thantasks for the new screen.

A LoadTask is then added to the TaskQueue to load “New Playlists”. TheLoadTask.taskType is DATA and the LoadTask.priority is MAX_PRIORITY.Adding the new task causes interrupt( ) to be called on the “MyPlaylists” LoadTask. As data objects are typically small (less than 4 k)interrupts are ignored. However because the “My Playlists” LoadTask hashad its priority lowered to NORM_PRIORITY any ImageLoadTasks it createsare also created with NORM_PRIORITY.

Once the “My Playlists” LoadTask has finished loading, the schedulertakes the “New Playlists” LoadTask from the queue and executes it. Once“New Playlists” has loaded the images for the “My Playlists” screen loadin the background.

1.1.2.3. User Starts Playlist

The user selects a Playlist from “My Playlists” and chooses the Playoption.

All of the Tracks in the Playlist are added to the play queue. AStartTask is added to the TaskQueue for the first track. TheStartTask.taskType is AUDIO and the StartTask.priority is MAX_PRIORITY.We then add a FetchTask to the TaskQueue for each Track. TheFetchTask.taskType is AUDIO and the FetchTask.priority is MIN_PRIORITY.Note, a FetchTask is added for each Track including the first track.This is because the StartTask could be cancelled by the user selectingNext before the task has finished. A FetchTask will first check to seeif a file exists and has been fully downloaded before making anHttpConnection.

When the StartTask has finished (and the track begins to play) aPrefetchTask is added for the second track. The PrefetchTask.taskType isAUDIO and the PrefetchTask.priority is MAX_PRIORITY. Depending on theconnection rate the second track should have prefetched before the firsttrack finished. In which case the first and second FetchTasks arediscarded (the files already exist) and the third tracks FetchTaskbegins to load.

1.1.2.4. User Starts Playlist and Opens Inbox

The user selects a Playlist from “My Playlists” and chooses the Playoption. Halfway through downloading the first track the user opens theInbox tab.

As above, a StartTask is added for the first track and FetchTasks addedfor each track. When the user opens the Inbox a LoadTask is created forthe ““Inbox” StorySet. The LoadTask.taskType is DATA and theLoadTask.priority is MAX_PRIORITY.

The priority of the StartTask is changed from MAX_PRORITY toNORM_PRIORITY and the “Inbox” LoadTask is added to the TaskQueue. Theinterrupt( ) method is called on the StartTask which causes theStartTask.run( ) method to throw an InterruptedException the next timeread( ) returns (when the 65 k buffer is filled). The scheduler catchesthe InterruptedException and the StartTask is rescheduled to run afterthe “Inbox” LoadTask.

The “Inbox” LoadTask is executed and it creates ImageLoadTasks for eachstory. These are created with MAX_PRIORITY and will all be executedbefore the StartTask is resumed. Once the images are loaded theStartTask resumes by first checking if the file exists and how much hasalready been read. The task will then request the remainder of the audiofile. Once the file has been downloaded the track will play and aPrefetchTask will be added for the next track.

1.1.3. Background Downloading

1.1.4. Dynamic Playlist Management

1.2. Intelligent Memory Management

MusicStation intelligently manages the memory available on each handsetand/or memory card.

-   -   Before downloading an object MusicStation will ensure that there        is enough memory available for the object.    -   If there is not enough room, MusicStation will perform a series        of checks before deleting an object.    -   MusicStation will delete the object with the oldest last        modified date, ensuring that the objects that are deleted are        those files that are not in heavy use or not in use at all.        1.2.1. Downloadable Objects

There are three types of downloadable objects within MusicStation. Theseinclude:

-   -   Data—any data that needs to be updated such as menu items,        charts, text within news articles etc.    -   Image—any images within MusicStation. These include the images        on the Artist and Album profiles and the images associated with        a news article.    -   Audio—the audio files.        Caches

Using the Max memory card use option on the Options menu a user candefine the maximum percentage of the memory card that MusicStation willuse for storage. This setting determines the allocated memory forMusicStation. The allocated memory is then divided into caches for eachtype of data object.

A cache exists for each of the downloadable objects. Each cache has anupper and lower limit:

-   -   An upper limit is the maximum amount of memory a cache can        utilise. It exists to ensure that a user does not exceed the        allocated memory.    -   A lower limit is the minimum amount of memory a cache can        utilise. A lower limit exists to ensure that memory is        consistently distributed between the different data objects.

The upper and lower limits are defined as a percentage of the allocatedmemory. The cache upper and lower limits for each type of data objectshave been defined as shown in FIG. 7.

1.2.2. Downloading Objects

Before an object is downloaded, MusicStation will run a series of checksto ensure that by the downloading the file that the lower and upperlimits are not breached. MusicStation maintains a list of each type ofobject, which is sorted in order of last use. The object that was mostrecently used is at the top of the list and the object with the oldestlast used date will be at the very bottom of the list.

If downloading of an object exceeds the upper limit of that object'scache, the following process will occur:

-   -   DELETE_WITHOUT_CHECK—MusicStation will delete the data object,        of the same type, that has the oldest “last used” date.

If there is no available memory to download the object, the followingprocess will occur:

-   -   DELETE_WITH_CHECK—    -   DELETE_WITH_CHECK will locate the data object, of the same type,        that has the oldest “last used” date and attempt to delete this        object. The delete will proceed if it does not take the cache        under the lower limit.    -   If the delete takes the cache under the lower limit,        DELETE_WITH_CHECK will locate the audio object with the oldest        last “last used” date and delete the audio object.    -   If DELETE_WITH_CHECK cannot delete an audio object, it will        proceed with step 1. Locate the data object, of the same type,        that has the oldest last “last used” date and delete this        object.        1.3. Device Specific Media Delivery

Each piece of content is “tagged” with the container, format, bitrateand sample rate (e.g. m4a, acc+, 48 kbps, 44.1 kHz). The playback ofcontent is tested on the device using a piece of base content (pinknoise) encoded in all variants of container, format, bitrate, samplerate and mime type. The results of these tests are sent via the testclient back to the server and stored. Each container, format, bitrate,sample rate and mime type has a preference when compared to the othersstored on the server. When the client then makes a request for anadditional piece of content the server returns either: A list of linksto that piece content encoded in the variations of container, format,bitrate, sample rate and mime type that played back. This is done bymatching the “tags” on the content that played back to the available“tags” on the additional piece of content. This list is ordered bypreference. A link to that piece of content encoded in the top encodingpreference. A audio playback quality test is performed on thisauto-selected item to confirm that it is of acceptable quality. If it isnot then the second preference would be examined, and so on down thelist. The audio quality test makes use of audio software to analyse theoutput of the phone's headphone socket.

2. User Experience Features

2.1. Client Exception Handling

The MusicStation client is regularly downloading and updating files inthe background whilst the customer is using the application. When anerror occurs we may want to retry, inform the user or do nothingdepending on the task that is being performed and the error that wasthrown. This document describes how we will decide what action to takewhen an error occurs.

2.1.1. Exception Listener

There are 3 main threads that control the MusicStation client. The UIThread handles all key presses, the Paint Thread handles all screenredraws and the Task Thread handles loading data. Exceptions can bethrown in any of these threads but they are always passed to theExceptionListener exceptionThrown( ) method.

The ExceptionListener then decides how to handle the exception based on:

The Exception that was thrown

The Event that caused the Exception

The priority of the Event

The super class of the Exception

These parameters are used to lookup the ExceptionConfig for thisexception. The ExceptionConfig contains all of the information needed todecide how to handle the exception.

2.1.2. Exception Config

The ExceptionConfig is used to decide whether to automatically retry theevent that caused the exception or whether to show an error message tothe user.

The following objects are used to configure exceptions:

ExceptionConfig: Contains the default behaviour for this exception

ExceptionEvent: Overrides the default behaviour for a specific Event andpriority

ExceptionLang: Contains the error messages in each language supported bythe device

See FIG. 8 Data objects used to configure exceptions.

Only exceptions that occur in the Task thread cause a retry. Thefollowing attributes are used to decide whether and how to retry theTask:

firstRetryInterval: We may want to initially retry the request quickly

firstRetryCount: The number of times to retry or 0 to not retry

secondRetryInterval: We may then want to back off and leave a longerperiod between retries

secondRetryCount: The number of times to retry or 0 to not retry

allowSessionRetry: If there is a server error or the file was not foundwe may want to disallow the same request to the server for this session.

deleteLocalFile: If the file is corrupted we may want to delete thelocal file and retry loading the file from the server.

Any exception can display an error message to the user. The followingattributes are used to decide whether and what to display to the user.

showAlert: If true, displays an error message to the user with one ormore options

continueOption: Goes back to the last screen

retryOption: Retries the Task

upgradeOption: Installs a new version of the application

closeOption: Closes the application

openBrowserOption: Retries the request in the mobile's WAP browser

exceptionLangs: The error message in each supported language

For any exception, these values can be overridden for a particular eventor we can fall back to the values defined for the exception'ssuperclass.

2.1.3. Device Specific Exceptions

Some devices do not throw the expected exceptions. For example the NokiaN70 throws an IOException with message “−34” when the server does notrespond rather than the more specific ConnectionNotFoundException. TheDeviceExceptionConfig object allows us to specify mappings betweendevice specific exceptions and the expected exceptions.

The following fields map a device specific exception to and expectedexception:

exceptionClassName: The Exception thrown by the device

exceptionString: The result of the Exception.toString( ) method

exceptionId: The known Exception this maps to

See FIG. 9 Device specific exception

2.1.4. Database Requirements

client_build

event_type_set_idFKnumber(10)not NULL

exception_set_idFKnumber(10)not NULL

The event and exception sets are created at build time and the indexesare used at runtime to map events and exceptions sent between the clientand server.

event_type

priorityvarchar(12)DEFAULT NORMAL, in (MIN, NORMAL, MAX)

The priority is used to determine which events are sent from the clientto the server first. Both the priority and severity level can be updatedon the client by the server.

event_type_set

idPKnumber(10)

automaticnumber(1)not NULL, default 0

countnumber(12)not NULL, default 0

guidvarchar(32)not NULL

namevarchar(96)not NULL

data_classification

created

inserted

modified

The set of events created for a client build. This set is used atruntime to map events sent by the client to event types in the database.

event_type_set_item

event_type_set_idPKnumber(10)not NULL

event_type_idPKnumber(10)not NULL

event_type_namevarchar(96)not NULL

event_type_indexnumber(10)not NULL, UNIQUE INDEX

data_classification

created

inserted

modified

The index is the mapping between a client event and an event type on theserver. The index will be defined as a constant in the EventType dataobject. All references to an event in the client code will use thisconstant.

exception_set

idPKnumber(10)

automaticnumber(1)not NULL, DEFAULT 0

countnumber(12)not NULL, DEFAULT 0

guidvarchar(32)not NULL

namevarchar(96)not NULL

data_classification

created

inserted

modified

The set of exceptions created for a client build. This set is used atruntime to map exceptions sent by the client to exceptions in thedatabase.

exception_set_item

exception_set_id PKnumber(10)not NULL

exception_idPKnumber(10)not NULL

exception_namevarchar(96)not NULL

exception_indexnumber(10)not NULL, UNIQUE INDEX

data_classification

created

inserted

modified

The index is the mapping between a client exception and an exception onthe server. The index will be defined as a constant in theExceptionConfig data object. All references to an event in the clientcode will use this constant.

exception

idPK number(10)not NULL

guidvarchar(32)not NULL

namevarchar(96)not NULL

event_type_idFKnumber(10)not NULL

class_namevarchar(128)not NULL

superclass_namevarchar(128)

first_retry_intervalnumber(10)

first_retry_countnumber(10)

second_retry_intervalnumber(10)

second_retry_countnumber(10)

allow_session_retrynumber(1)

delete_local_filenumber(1)

show_alertnumber(1)

continue_optionnumber(1)

retry_optionnumber(1)

upgrade_optionnumber(1)

close_optionnumber(1)

open_browser_optionnumber(1)

message_key_idFKnumber(1)

descriptionvarchar (256)

commentsvarchar (256)

data_classification

created

inserted

modified

Contains fields that control how an exception that is thrown on theclient is handled. The exception configuration is included in the JAR atbuild time and can be updated at runtime on the client by the server.

exception_event

exception_idPKnumber(10)

caused_by_event_type_idPKnumber(10)

event_priorityPKnumber(10) in (ALL, MIN, NORMAL or MAX)

first_retry_intervalnumber(10)

first_retry_countnumber(10)

second_retry_intervalnumber(10)

second_retry_countnumber(10)

allow_session_retrynumber(1)

delete_local_filenumber(1)

show_alertnumber(1)

continue_optionnumber(1)

retry_optionnumber(1)

upgrade_optionnumber(1)

close_optionnumber(1)

open_browser_optionnumber(1)

message_key_idFKnumber(1)

event_indexnumber(10)

descriptionvarchar (256)

commentsvarchar (256)

data_classification

created

inserted

modified

Exception handling can be overridden for specific events and specificevent priorities.

device_exception

device_idPKnumber(10)

exception_class_namePKvarchar(128)

exception_stringPKvarchar(256)

exception_idFKnumber(10)

automaticnumber(1)not NULL, DEFAULT 0

data_classification

created

inserted

modified

Maps device specific exceptions onto known exceptions. This table ispopulated by the detective during device commissioning.

2.2. Recommendations

This document describes the approach taken with making recommendationsto customers from within the MusicStation application. Omnifone viewsthe ability to make ever-changing, relevant and up-to-daterecommendations as key to the strategy of creating loyalty towards theMusicStation application. Recommendations, properly implemented,encourage exploration and discovery that in turn lead to more purchasesof new music. Additionally they allow us to optimise the MusicStationexperience in the restricted mobile environment.

2.2.1. Recommendations within MusicStation

MusicStation contains several features designed at promotingpersonalised recommendations to the customer. These features are spreadover the Home, Inbox and Buzz tabs and are described in detail in thefollowing sections.

2.2.1.1. Recommendations on the Home Tab

See FIG. 10 Screen Captures—Get new . . . option

Whenever a customer selects the Get new playlists, Get new artists, Getnew albums or Get new tracks option from the Home tab, they arepresented with a list of menu options, some of which are personalisedsuggesting recommendations to the customer based upon their recentlistening habits.

The menu items that contain personalised recommendations are shown inFIG. 11.

2.2.1.2. Information that Influences Music Recommendations

Music recommendations for the Home tab are made based upon theinteraction of two factors unique to the customer:

The implicit factor: This is based upon the listening habits of thecustomer (i.e. the type of music they listen to and the frequency withwhich they listen to it).

The explicit factor: How the customer actually rates music that theylisten to.

Also counting towards the implicit factor will be any click-throughs onInbox content that the customer has made (for more information pleaserefer to section 2.2.1.4—Recommendations on the Buzz tab)

See FIG. 12 Screen capture—rating an item. In terms of the explicitfactor Customers are pushed recommendations for music similar to othermusic that they have rated as Love it, and are not recommended anycontent that is defined as similar to music they have rated with Hateit.

2.2.1.3. Making Music Recommendations

These implicit and explicit factors for each customer are combined, andmixed with known relationships between Artists and other Artists, Tracksand other Tracks and so on. The outcome is a list of personalisedrecommendations to the customer.

Over time, as we collect information on which Artists, Albums, tracksand Playlists are popular (or not), these recommendations will becomeeven more tightly geared to what the customer is most likely to findrelevant. The system will automatically push to the customer the mostpopular Artist, Albums or Tracks that have direct relationships with thetop Artists/Albums and Tracks that the customer listens to or purchases.

2.2.1.3.1. The Importance of ‘Recency’

It is important that recommendations are only made based upon thecustomer's recent listening habits, and not their listening habits forall time. This ensures that the suggestions are the most relevant to thecustomer at the time of creation, and do not consist of a clouded swatheof very broad suggestions that are influenced by a customer that mayhave, say, very changeable and diverse tastes.

In terms of MusicStation, recency is defined by the last NArtists/Albums/Tracks or Playlists that the customer has listened to orpurchased. The actual value of N is configurable based on observations,enabling fine-tuning over time of the recommendation process.

2.2.1.4. Recommendations on the Buzz Tab

2.2.1.4.1. Recommendations Through News

See FIG. 13 Screen capture—News. All News content (news stories, eventsnotifications, promotions for particular Artists etc.) is personalisedto the customer based upon the same implicit and explicit factorsdescribed for the Home tab. Additionally, as described previously, whereusers click-through on News content, e.g. a promotion linking to anArtist homepage, this event is tracked, and is then used as a ‘positivevote’ for that Artist in the overall recommendation process.

2.2.1.4.2. Recommendations Through Buzz Members

See FIG. 14 Screen capture—Buzz member recommendations.

The Buzz tab contains two main elements that contain recommendationsdirected at each individual customer. These are described in the tablein FIG. 15.

Recommendations for members (i.e. MusicStation customers) are made bylinking customers whose listening and rating history for music issimilar (internally the system measure the ‘affinity’ of customers toall other customers, and select those with the highest level of affinityfor the customer in case).

If a customer selects a recommended member then they are able to listento, and rate, their Shared Playlists.

2.2.2. Supporting Logical Structures for Making Recommendations

We will have three main structures to support the making of theserecommendations.

-   -   Associated Tracks Matrix    -   Associated Artists Matrix    -   Associated Customers Matrix

We will discuss the physical infrastructure of systems in a latersection. For the moment it is enough to consider that these structureswill be frequently refreshed, every 24 hours.

2.2.2.1. Supporting Structure 1—Associated Tracks Matrix

The Associated Tracks Matrix is a matrix of correlations representinghow strongly associated pairs of Tracks are in the system, based onratings, and customer plays.

2.2.2.1.1. Stage 1—Produce Counts of Track Associations

For Tracks we will build a matrix like the one above, representing:

Counts of customers who have either/or fully played, or have rated asLove It!, the Tracks in the pair.

Important Notes and Rules

The matrix in FIG. 16 only considers a universe of 5 Tracks. We arelikely to be considering 500,000 for go-live.

In order to be included as a count in 1), the user in question must havelistened fully (as defined by the licensing agreements) AT LEAST TWICE.The rationale behind this is that, if a customer listens to a Track morethan once, then they probably like it. If they only listen to the Trackonce then they may only be exploring new music, but not be impressedenough to ever go back to it.

If a customer rates two Track pairs highly, and listens to both morethat twice, then this will have the effect of adding 2 to thecorresponding intercept in the matrix. This is the maximum influencethat one user can ever have on a Track intercept pair.

A Track that has been rated as Love It!, but never played, still countstowards an association.

This matrix covers all Tracks, and all ratings and plays, across allservices, within the global MusicStation offering. The same applies tothe Artists Associations Matrix described further on.

You will note that half the matrix is duplicated across the diagonal.Therefore, in theory, only half of the matrix is needed.

2.2.2.1.2. Stage 2—Weight the Track Associations

We now need to take the matrix from Stage 1 and apply weightings andproduce correlations that take account of the fact that some Tracksmight just simply be popular to ALL customers (and hence are notnecessarily highly correlated for individual associated pairs).

The formula that we apply to do this is known as a TF•IDF formula.

A description of how the TF•IDF formula works, in the context ofkeywords belonging to a document or web search, is outlined here:

TF=Term Frequency

A measure of how often a term is found in a collection of documents. TFis combined with inverse document frequency (IDF) as a means ofdetermining which documents are most relevant to a query. TF issometimes also used to measure how often a word appears in a specificdocument.

IDF=inverse document frequency

A measure of how rare a term is in a collection, calculated by totalcollection size divided by the number of documents containing the term.Very common terms (“the”, “and” etc.) will have a very low IDF and aretherefore often excluded from search results. These low IDF words arecommonly referred to as “stop words”.

${Weighting} = {{frequency}\; \times \;{\log_{2}\left( \frac{1}{{p\left( T_{1} \right)}{p\left( T_{2} \right)}} \right)}^{3}}$

Notes on this equation:

-   -   The TF=frequency (or the intercept value in the Stage 1 matrix).    -   The IDF is represented by the latter (log) part of the equation,        and is a base-2 logarithm.    -   P(T₁) represents the overall probability of Track 1 appearing at        least once in the different pairings in the matrix (i.e. it is        simply how many times it occurs at least once in a pairing,        divided by the total number of Tracks).    -   The IDF is raised to the power of 3. This is not a fixed        constant, but is something that can be experimented with in        order to refine the recommendations. A well-known online        music-recommender uses the value of 3 for this constant, and so        we would be wise to follow their knowledge and lead.

As an example of the equation's use, if we wish to calculate a weightingfor Track 1 and Track 2 from the Stage 1 matrix, then we would performthe following calculation

${{Weighting}\;\left( {T_{1},T_{2}} \right)} = {12 \times {\log_{2}\left( \frac{1}{\frac{3}{4} \times \frac{2}{4}} \right)}^{3}}$

This gives a weighting for Track 1 and Track 2 of 34. We can now producea new Weightings Matrix, shown in FIG. 17, including the sum of all theweightings at the end of each row and column.

2.2.2.1.3. Stage 3—Normalize the Weightings

We now need to normalize the weightings. Essentially all this means isthat we create a new matrix where every weighted correlation in thematrix is divided by the overall sum for the correlations in that row orcolumn.

Using the example of Track 1 and Track 2 again, we would simply divide34 by 110.5, providing a normalised weighting of 0.31.

The result of this is that we now have a set of normalized weightingslying between 0 and 1 as shown in FIG. 18.

In the resulting table, the nearer the value is to 1, then the higherthe correlation between the Tracks.

In the world of recommendations, the values in the table are now calledPre-Computed Associations (PCAs), by virtue of the fact that they arecorrelations, at that they are reproduced on a regular basis (butgenerally not updated in an ongoing manner due to the amount of numbercrunching involved).

2.2.2.2. Supporting Structure 2—Associated Artists Matrix

The Associated Artists Matrix is a matrix of correlations representinghow strongly associated pairs of Artists are in the system, based onratings, and customer plays, e.g. as shown in FIG. 19.

The Associated Artists Matrix of PCAs will essentially be built inexactly the same way as that for Tracks.

The criteria for inclusion in the Artist Plays Matrix is that thecustomer must have fully played at least one track from that Artist atleast twice. Again, the maximum influence a single customer can have onthe matrix is a an additional value of 2 (in the instance where theyhave both rated a pair of Artists as Love It! And have fully listened toat least one Track from both Artists at least twice.

N.B. Ratings for Tracks or Albums by this Artist have no influence onthe Associated Artists Matrix.

2.2.2.3. Supporting Structure 3—Associated Customers Matrix

The Associated Customers Matrix is a matrix of correlations representinghow strongly associated pairs of Customers are in the system, based onratings, and customer plays. See e.g. FIG. 20.

The Associated Customers Matrix of PCAs can be built as part of the sameprocess for generating the Associated Artists matrix.

The criteria for inclusion in the Associated Customers Matrix is thatthe customer must have fully played at least one track from the sameArtist* at least twice. Again, the maximum influence a single customercan have on the matrix is a an additional value of 2 (in the instancewhere they have both rated THE SAME pair of Artists as Love It!, andhave fully listened to at least one Track from both Artists at leasttwice.

N.B. Choosing common Artists here is likely to be beneficial overchoosing common Tracks since the implications for calculations andprocessing power will be lowered.

2.2.3. Making Recommendations

This section describes how the described structures are used to generaterecommendations fro:

-   -   “More like this” Track, Album or Artist    -   Tracks “You might like”    -   Albums “You might like”    -   Artists “You might like”    -   Playlists “You might like”    -   “Recommended Members” as listed on the Buzz Cool Members screen    -   Recommended Playlists as listed on the Buzz Cool Playlists        screen—is this the same list as Playlists you might like?    -   “Find in Playlists?”    -   Inbox—editorial and promotional

All the functionality described runs at run-time on a per-requestbasis*, based upon the calculated PCAs.

See FIGS. 21, 22, 23, 24 and 25.

2.2.4. Generating Starred Ratings

This section explains how we generate the 5-star ratings forArtists/Albums/Tracks/Playlists.

2.2.4.1. Inputs to the Rating System

There will be two inputs to the star-ratings system—explicit ratings(i.e. Love It! and Hate it!), and implicit ratings (i.e. number oflistens to Artists/Albums/Tracks, specifically the number of times acustomer has fully-listened to that Artist/Album or Track, and at leasttwice).

It is recommended that, where possible, the ratings be mad up of a 50/50split of explicit and implicit measures.*

*This will also have the advantage that customers cannot simplyabusively rate stuff to get it to appear with a higher or lower starrating.

2.2.4.2. Calculating the 5-Star Rating forArtists/Albums/Tracks/Playlists

2.2.4.2.1. Calculating the Explicit Rating Value

The explicit rating for an Artist/Album/Track/Playlist is simply basedupon the proportions of customers who rated the Artist/Album/Track asLove It! against those who rated it as Hate It!. It is calculated asfollows:

-   -   1) Take the number of customers who have rated the        Artist/Album/Track/Playlist as Love It!.    -   2) Divide the value in (1) by the overall number of customers        who have rated the Artist/Album/Track/Playlist (i.e. either as        Love It! or Hate It!)    -   3) Multiply by 5 to provide a rating value out of 5.

For example, consider that for Angels—Robbie Williams, we have 45 LoveIt! ratings and 18 Hate It! ratings. The rating value is then:

${Rating\_ value} = {{\left( \frac{45}{45 + 18} \right) \times 5} = 3.57}$2.2.4.2.2. Adjusting the Rating Value to Handle Low Number of Ratings

I order to avoid abuse, and to prevent lots of 0 or 5 star ratingsappearing in the system in situations where only a few customers haverated an Artist/Album/Track/Playlist, we should always include twophantom ratings of Love it! and HateIt! in the calculation. Thus thefinal calculation becomes:

${Rating\_ value} = {{\left( \frac{45 + 1}{\left( {45 + 1} \right) + \left( {18 + 1} \right)} \right) \times 5} = 3.53}$2.2.4.2.3. Calculating the Implicit Rating Value

For calculating the implicit rating value we need to create a baselinefor comparison.

The most sensible baseline is one that represents the average number ofplays per customer for all Artists/Albums/Tracks/Playlists that havebeen fully played at least once by each individual customer (i.e. it isnot fair to include Artists/Albums/Tracks/Playlists that have never beenlistened to within the calculation). We can that take this baseline torepresent a 2.5 rating within the system, and adjust all other ratingsup or down accordingly by normalising the distribution to around the 2.5rating value.

As an example, if the average* number of plays per customer for theTrack: Angels—Robbie Williams is 12.90, and the average number of playsfor all Tracks (that have had at leas one full play) per customer is4.66, with a standard deviation of 4.23, then we would do the following:

Average plays per customer for Angels—Robbie Williams=12.90

Normalized plays (around a mean of 0)=(AV. PLAYS−OVERALL AV.PLAYS)/(STDEV)

Therefore, normalized plays (around a mean of 0)=(12.90−4.66)/4.23=1.95

Therefore, normalized plays (around a mean of 2.5 stars)=2.5+1.95=4.45

(N.B. It is feasible that, in very extreme circumstances, this valuecould be <0, or >5. In this case we will cap the value at 0 or 5accordingly)

The overall representation of how this works in a universe of 6 Tracksis represented in FIG. 26.

*N.B. Use the MEAN average initially, but we should also experiment withthe MEDIAN average since the latter will have the effect of removing theinfluence of individual customers who just play oneArtist/Album/Track/Playlist in an obsessive manner (!)

2.2.4.2.4. Calculating the Overall Rating Value

The overall 5-Star rating is calculated by simply taking the average ofthe implicit and explicit ratings, and rounding up to the nearest halfstar (round up since we want to be positive in what we present!).

Thus the overall rating for Angels—Robbie Williams=(3.53+4.45)/2=3.99

Therefore Angels—Robbie Williams receives a 4-star rating.

2.2.4.3. Calculating Ratings for Customers

The ratings for customers will be based upon a 50/50 average of:

-   -   1) The ratings and number of listens that a customer has had to        their shared Playlists.    -   2) The number of friends the member has.

The former is calculated in a similar manner to that described insection 2.2.4.2, and likewise, for the implicit part, only considersPlaylists that have been listened to by other customers and at leasttwice. Once we have the overall ratings for all the customer's playliststhen we will simply take an average of all of them to produce a finalrating (5 star or other more desirable representation).

The second part is calculated as the mean number of friends with respectto the average number of friends for the entire service data set, i.e:

Normalized friends (around a mean of 2.5)=2.5+(AV. PLAYS—OVERALL AV.PLAYS)/(STDEV)

2.3. Search Function

This whitepaper describes the search interfaces, processes and resultssets that make up the MusicStation music search. Due to the nature ofthe mobile working environment the search mechanism within MusicStationhas been designed so that it is simple and intuitive to use, whilst atthe same time being an extremely powerful feature. Emphasis is placedupon providing relevant and accurate results quickly to the MusicStationcustomer base.

At the same time as this, it should be remembered that much ongoingautomated work is being done in the background to push relevant Artists,Albums, Tracks and Playlists to the customer under the You might like,Recently Added and Featured Artists/Albums/Tracks/Playlists menuoptions. The contents of these menu options are updated constantly andare based upon a customer's unique tastes and their purchasing andlistening habits.

2.3.1. Search Interface

2.3.1.1. Basic Search

The basic search provides quick but powerful access to the MusicStationmusic database. The search is performed by the customer entering akeyword (or set of keywords) and then further refining their search byone of:

-   -   Artist    -   Album    -   Track

Additionally it is possible to further restrict the search tonon-classical music only or classical music only, with the default beingthe selection previously used. Otherwise the system will search both.

2.3.1.2. Advanced Search

The Advanced Search screen allows for extensive and finer control to beemployed over the search process. Using the Advanced Search screen it ispossible to filter the result set by:

-   -   Artist, Album or Track    -   Genre    -   Chart position (highest)    -   Minimum customer rating    -   Language    -   Country

In addition it is possible to search the following fields for classicalmusic:

-   -   Work Title    -   Album Title    -   Composer    -   Soloist/Performer    -   Conductor    -   Orchestra/Ensemble    -   Record Label        2.3.2. General Principles to Support Searching in MusicStation

There are ten basic principles that have been adhered to in creating theMusicStation search. These principles are provided here with exampleswhere appropriate.

2.3.2.1. No Dependence on Non-Alphanumeric Characters

Different customers will use non-alphanumeric characters in differentways. For example some may use a hyphen as a separator in an Artisttitle. Others may simply use a space. In the mobile environment enteringnon-alphanumeric characters can sometimes be tricky and is prone toerror. Therefore, for the purposes of search, there is no dependency onnon-alphanumeric characters, and by way of example, the following areall considered to be equivalent:

-   -   s club7    -   s-club-7    -   sclub7        2.3.2.2. No Dependence on Character Case

This simply means that, for example, the following are consideredequivalent

-   -   s club7    -   S CLUB 7    -   S Club 7        2.3.2.3. International Variations of Characters are Treated as        Equivalent

Different customers will use non-English characters in different ways.For example a British person may search for:

-   -   Bjork        . . . when what they really should be searching for is:    -   Björk

In MusicStation such discrepancies do not matter since the search systemmatches international variation of English letters to their Englishalphabet equivalents (and vice versa).

2.3.2.4. Numerics are Treated as the Same as their Written Equivalents(and Vice Versa)

In an Artist search a customer may enter, for example, “50 Cent” or“Fifty Cent”. Both these cases are handled by the system.

2.3.2.5. Abbreviations and Different Ways of Writing Words do not Matter

Internal mapping tables ensure that commonly used abbreviations andequivalent representations are understood. Thus the following keywordsare all be considered by the system as equivalent:

-   -   Boys to Men    -   Boys 2 Men    -   Boys II Men

In a similar vein “and” and “&” are considered to be equivalent.

2.3.2.6. There should be No Dependence on Correct Positioning of “The”

We are not concerned about how “The” is used. For example the followingkeywords are all be seen as equivalent by the system and the correctresult will be returned:

-   -   The Rolling Stones    -   Rolling Stones, The, or simply:    -   Rolling Stones        2.3.2.7. Customers do not Always Enter the Full Set of Keywords

Someone searching for “Rage Against the Machine” may simply enter “Rage”as a keyword and expect MusicStation to return a sensible set of resultsto choose from.

2.3.2.8. Customers do not Always Spell Words Correctly

Though we are primarily looking for an exact match we recognize thatcustomers often mis-spell words. We use fuzzy-logic and phoneticmatching techniques to suggest search Artists, Albums or Tracks to thecustomer when all else fails.

2.3.2.9. If they Know What they want then Take them there

If a customer searches for “rage against the machine” and this resultsin 1 result being returned then they will be forwarded automatically tothe “Rage Against the Machine” Artist Homepage. We will not present themwith a result set containing a single Artist that they must then clickon.

2.3.2.10. We Will Learn from Use of the System and Optimize itAccordingly

There may be variations of Artist, Album or Track names that customerssearch for, that are quite different to the one stored in the database.Structures exist to ensure that when we see a new variation in a searchkeyword, we are able to match it to the intended Artist, Album or Trackname, thus ensuring that all future searches using that variation aresuccessful.

Similarly, when sorting the search results will make use of knowledge ofthe popularity of the results (as played by customers) ensuring that themost popular (and hence the most likely result for the intended search)are nearer the top. When this is occasionally not correct the customermay choose an alpha-sorted view instead.

2.3.3. The Search Process

The following is a description of the search process from the pointwhere the customer enters their search keyword(s) for an Artist search.

N.B. The same principles below are also applicable to the Album or Tracksearches.

-   1) An exact match for the entered search keyword(s) is searched for,    but based on the underlying principles outlined in Section    2.3.2—General Principles to Support Searching in MusicStation.-   2) We then search for instances of the search keyword(s) within the    Artist names. For example, given the search keyword “BOB MARLEY”,    valid matches are:    -   a) “BOB MARLEY*”    -   b) “*BOB MARLEY*”, and:    -   c) “*BOB MARLEY”    -   (where * is a ‘wildcard’ representing any sequence of        characters)

Matches of type (a) are viewed as higher priority in the returnedresults list than those of type (b) and (c).

If (1) and (2) returns only 1 match then we go direct to Artist homepage(and the Album Homepage for Albums, and the Now Playing screen forTracks).

Otherwise we list matches from 1), followed by matches from 2) ranked bypopularity and then alphabetically.

If we have found matches from the above then we leave the searchroutine. Otherwise we move on to approximate matching:

We repeat steps 1) to 4), but this time by making use of phonetic andfuzzy-logic matching to find matches that sound similar to the keywordor are spelt slightly differently. Any matches that are returned fromthis process are preceded by the header: “No exact matches found. Didyou mean:” so that it is clear to the customer that the search resultsare not precise matches. The result set is again ranked by popularityand then alphabetically.

2.3.4. Finding in Results

In instances where the results list is large the customer may search formore specific items by using the ‘Find’ option on the ‘More popup’ menuto navigate through the list looking for a specific string. When thecustomer submits the first occurrence of it is found. The next resultcan be moved to quickly by use of the ‘Next’ option on the left-handsoft-key.

2.3.5. Refining the Search

It is possible to refine a search from the results set page using anoption on the ‘More popup’ menu. What this means is that the user maysearch again (in either the Basic or Advanced Search) but with thesearch keyword box and all pre-selected filters maintained allowing forthem to be quickly refined.

2.3.6. Format of the Search-Results Set

When a search results in a search result-set being returned the count ofelements in the set will be presented in the top right of the page.

The format of the actual results themselves is different dependent onwhether the search was for an Artist, Album or Track. These formats aredescribed in greater detail in this section.

2.3.6.1. Artist Search

The top Artist Name matches are returned, sorted by popularity of theArtist as measured by the system. These are followed by further matchesof similar (but lower) popularity, sorted in alphabetical order.

2.3.6.2. Album Search

The Album search will return results in the following format:

-   -   Album Name—Artist Name (Year of Release)

Having the ‘Year of Release’ ensures that, for example, re-releases(which may contain bonus or updated tracks) can be easily distinguishedfrom the original.

The top matches are returned sorted by popularity of the Album asmeasured by the system. These are followed by further matches of similar(but lower) popularity, sorted in alphabetical order.

2.3.6.3. Searching Tracks

The Track search will return results in the following format:

-   -   Track Name—Artist Name (Track Length)

Having the ‘Track Length’ (in mm:ss) ensures that Tracks having the samename (but of different length) can be distinguished. This can oftenoccur with re-mixes on different Albums.

N.B. Having the Album Name here is deemed as unnecessary and undesirabledue to the overall length of the string that would result in what is atightly restricted environment. Also, if the same Track occurs ondifferent albums, then it will only be returned once.

The top matches are returned sorted by popularity of the Track asmeasured by the system. These are followed by further matches of similar(but lower) popularity, sorted in alphabetical order.

2.3.7. Find in Playlists

At suitable points in the system, when a Track is being referenced, thecustomer can search for that Track within Playlists by using the ‘Morepopup’ option ‘Find in playlists’. A list of Playlists shared by otherMusicStation customers (or contained within other system-publishedPlaylists) is returned, sorted by popularity.

2.4. Multi-Language Support

This document describes how we manage and use messages to build a clientbuild for a specific device, service and client version.

2.4.1. Development

Each client version released by Development has a default set ofmessages used by the client. This message set is maintained during thedevelopment of a release by the developers. Each message in the messageset is text or a label that appears somewhere in the client. See FIG. 27Properties of a message.

A message is added to the default message set by adding a record tomessage_set_item with the next available message_index. The messageindex is used in the source code to access messages in the message set.The index is defined as a constant in the Message object:

-   -   public static int OPEN_LABEL_INDEX=104;

This constant can then be used to get the message in the currentlyselected language:

openCommand.setLabel(messageSet.getMessage(OPEN_LABEL_INDEX));

This message set is set as the default message set for a client version.

Images that are packaged in the build are defined in the default imageset. Images are selected from this set based on the image role. See FIG.28 Properties of an image.

The client version is released with the default message and image sets.See FIG. 29 Properties of the client version.

2.4.2. Client Version Release

The following records are packaged with a client version release fromdevelopment to the Build System:

-   -   The default message set and message set items    -   The messages and message keys used by the default message set    -   The message langs in English and any other test languages    -   The default image set and image set items    -   The images used by the default image set        2.4.3. Message Translation

Translated messages can be loaded into the Build System at any time. Alanguage is available for selection by the build user when each messagein the default message set has a message lang for that language. SeeFIG. 30 Translated messages.

When adding a message to a service message we enforce that a messagelang record exists for all languages supported by the service. Similarlyif a build user selects a device to use with that service we ensure thatall device messages have a message lang for all languages supported bythe service.

Because a client build is built for multiple languages but we can onlyinclude one icon, logo and splash screen in the jar there's no need fortranslation of images. The images defined for a service are in thedefault language for that service.

2.4.4. Device Messages

A message set can be defined for a device. This allows us to overridemessages in the default message set for the selected device. See FIG. 31Device Message properties.

For example a help message may be specific to a particular device: seeFIG. 32 Device Message/Help Message properties.

At time of build, messages defined for the selected device overridemessages in the default message set that have the same message key.

2.4.5. Service Messages

Messages can also be defined for a service. These messages override thedefault and device message sets although in practice messages should beeither device specific or service specific and not both. See FIG. 33Service Messages.

A service also has a default language and a set of service languages.These are set as the default language and supported languages for theclient build however the build user is able to edit these before doingthe build if the build needs a different default language or only asub-set of the languages.

2.4.6. Service and Device Specific Message and Images

In some instances we want to specify that a message or an image isspecific to a particular device and a particular service. For example wemay want to use an service icon that has been manually resized on a setof devices. See FIG. 34 Service and Device Specific Messages.

2.4.7. Message Substitution

Any service or device property that can be referenced in the database isavailable for substitution into the default message set. For example tosubstitute the customer support phone number:

To get help please call${service.company.companyAddress.customerSupportTelephone}

The default message set supports substitution and this is hidden fromthe build user. When they view the default message it will have thephone number already substituted in.

Device and service messages also support substitution. The tools thatmanage device and service messages should hide the syntax from the builduser.

If a substituted value isn't defined for a device or service the builduser is required to set the value before the build can proceed.

2.4.8. Client Build

The user has chosen the client version, device and service. The defaultmessage set for the version provides the base for the messages selectedfor the build. These messages are then overridden by the device andservice messages sets respectively. These are then overridden by anymessages specified in the service_device message set.

The selected languages for this build are then used to filter themessage lang records for the supported languages.

A client build message is created for each message in each language andcopied into the client build message table for this build. See FIG. 35Client Build message.

Taking a copy of the message at build time allows us to:

-   -   Keep a record of any substitutions made    -   Update messages without having to duplicate locked messages

A client build image is created for each image in the default image setand then overridden with any images in the service image set. These arethen overridden by any images specified in the service_device image set.These images are then resized and renamed and packaged in the jar.

Client build messages and images form part of the client builddefinition and are published to a Production Server when that clientbuild is published to it.

2.4.9. Publishing Client Builds

For each client build the following message related tables are releasedto the Production System:

-   -   Client_build: The record for this client build    -   Client_build_message: The records for this client build    -   Message: Each message referenced in client_build_message    -   Message_key: The key for each message    -   Message_lang: The message_lang for each message in each        supported language.    -   Client_build_image: The records for this client build    -   Source image files: Each image file referenced in        client_build_image        2.5. Roaming Network Selection

When the phone is “Roaming” a user will experience additional chargeswhen using MusicStation. These charges will be applied when a userdownloads tracks or when MusicStation updates menu items and imageswhile the phone is roaming. A user can configure the Roaming behaviourfor MusicStation.

2.5.1. Configuring Roaming Behaviour

See FIG. 36 Screen capture—Roaming options

Within MusicStation a user can configure the Roaming behaviour forMusicStation. See FIG. 37.

If the Roaming behaviour for Menu & picture updates is set to Ask theywill be shown a warning message which will ask them to approve/denydownloads, updates and additional charges while roaming for a givensession. See FIG. 38 Screen capture—Roaming Warnings

When the user attempts to download a track while Roaming and the Roamingbehaviour for tracks is set to Ask they will be shown a warning messagewhich will ask them to approve/deny downloads, updates and additionalcharges while roaming. This action, approval/denial, will configure thesettings for the current session. See FIG. 39 Screen capture—RoamingWarnings—Ask prompt

2.5.2. Roaming Warnings and Errors

Billable actions can be classify in two categories:

-   -   Track Downloads—downloading of audio files.    -   Menu and picture updates—updating of menus includes items such        as Chart listings, You might like recommendations, Cool members        and Buzz playlists. Updating of pictures such as a changed image        on a Buzz profile or downloading new images for artist and album        pforiles.

The follow process will occur for every connected billable action foreach new session of MusicStation.

-   -   The server should examine the response headers of all requests        coming from the client.    -   When roaming is detected and the user selects a billable action        then examine the roaming option set for that type of action on        the Options menu.    -   If that action is marked as On (allow) on the Roaming options        menu then the action will be performed as normal.    -   If that action is marked as Off (disallow) on the Roaming        options menu then a popup will be displayed explainng that it is        blocked.    -   If that type of action is marked as Ask on the Roaming options        then the first time in a session that an action of this type is        selected then the Roaming Warming will be displayed. Subsequent        actions will then be treated based on the answer that the user        provided.        2.5.3. Roaming Warnings        2.5.3.1. Roaming Options set to Ask

When billable actions are set to Ask on the Roaming Optios menu thefollowing Roaming Warning is displayed. The user will be prompted toselect a setting for this type of billable action while roaming See FIG.40 Screen capture—Roaming Warning—Ask prompt

-   -   If the user selects Don't Allow then the all subsequent actions        in this area will display the Roaming error for the rest of this        session or until Reset Location is selected    -   If the user selects Allow then all subsequent actions in this        area will go ahead with no further prompts, for the rest of this        session or until Reset Location is selected    -   If the user selects Terms & Conditions a WAP page display terms        and conditions for MusicStation use. Closing the WAP browser        returns to MusicStation at the above prompt.

As soon as the user returns to their home network this warning would nolonger be displayed.

2.5.3.2. Roaming Options set to On

When billable actions are set to On on the Roaming Options menu thefollowing Roaming Warning is displayed the first time a user performs abillable action in a roaming session. The user may have set the roamingpreferences some time in the past and forgotten that they had allowedthese chargeable actions. See FIG. 41 Screen capture—Roaming Options setto On.

The user is warned that they will be charged for either track downloadsor menu and picture updates. Track downloads and/or menu and pictureupdates will proceed. These options can be changed on the Roamingoptions menu.

2.5.3.3. Roaming Options set to Off

When billable actions are set to Off on the Roaming options menu thefollowing Roaming Warning is displayed the first time a user performs abillable action in a roaming session.

See FIG. 42 Screen capture—Roaming Options set to Off

The user is warned that Track downloads and/or menu and picture updateswill not proceed. These options can be changed on the Roaming optionsmenu.

2.5.4. Detecting Roaming

The following process describes how MusicStation detects that a phone isroaming:

-   -   Every HTTP request from the MusicStation client to our server        goes through the MNO's gateway    -   They have configured the gateway to add certain information to        the header. For example:

-   X-WSB-Identity:$(MSISDN);    X-TELENOR-SGSN:$(RADIUS:SGSN-IP-Address);X-bearer:$(BEARER_TYPE)    -   The second field here is the IP address of the SGSN. It is the        IP address of the gateway which the handset is communicating        through.    -   We compare this IP address with a list of IP addresses of the        gateways on the MNO network.    -   If the IP address is not on this list then this means that the        handset is roaming

The server makes this evaluation by looking up the IP address in thelist and if it decides it is roaming it then it pushes that status backto the client which will then run through the rules and user promptsdescribed in 2.5.2. Roaming Warnings and Errors.

3. Community Features

In addition to an end user's ability to interact with the server in anindividual capacity the client and server also provide certain communityfunctionality whereby users can interact with one another. Each user hasthe ability to create an individual profile, send ‘friend’ requests toother users and thereafter send their playlists or recommendations byartist, album or individual tracks to confirmed ‘friends’.

3.1. Registration

The first step in participating in the community features is therequirement for a user to register a unique profile within the communityenvironment (also known as Buzz)

3.1.1. No Member Name Defined

When the user attempts to access the community features but the user hasnot registered their Buzz user name then the Buzz home page displays aninvitation for the user to register with Buzz. Member name is onlymandatory field:

-   -   customer_preference.nickname

In addition the user can optionally enter a catchphrase and/or select animage as their avatar:

-   -   customer_preference.catchphrase    -   customer_preference.avatar_image_id

If member name is unique in this service, and passes the swear wordfilter then the Buzz home page shows the newly defined details for thismember.

If member name is not unique in this service the client returns to thescreen, replacing the user entered member name with the suggested membername for the user to either accept or modify.

When the user has provided a member name then the Buzz home page showsthe previous details for this member and a count of the user's confirmedfriends and the number of listens to their shared playlists:

-   -   Customer_count.friend_count    -   playlist_count.play_count        3.1.2. Member Name Defined

When the user has provided a member name then the Buzz home page showsdetails for this member.

-   -   customer_preference.nickname    -   customer_preference.avatar_image_id    -   customer_preference.catchphrase    -   customer_data.calculated_rating    -   Customer_count.friend_count (count of customer_to_customer where        customer_id=${customerld} and        customer_to_customer.friend_status=APPROVED)    -   play_count_otherplaylist (sum of playlist_count.play_count where        playlist.owning_customer_id=${customerId})

Rating is computed from their popularity. The algortihm is included in2.2 Recommendations.

Menu options give access to shared playlists and ranked communitymembers (3.4 Buzz Cool Members) who will be of interest to this member.They also give access to the user's own playlists and their friends(3.6.1 Buzz Friends).

3.2. Edit My Profile

An option exists via the context sensitive menu that allows the user toedit their profile, which is displayed on their Buzz profile screen andcan be viewed by other members if appropriate options are set. It isdisplayed when the user selects an “Edit My Profile” option from thecontext sensitive menus within the Buzz Main screen. The user can edittheir Member Name, their catchphrase, their image and viewing options:

-   -   Show Profile—controls whether this member's profile is ever        visible to other members. The default is Yes.    -   Show my top tracks—controls whether this user's favourite        artists are listed on their member profile screen. The default        is Yes.        3.3. Shared Playlists

A menu option gives access to shared playlists which will be interestingto this user.

“You Might Like” playlists are other users' shared playlists which havebeen selected for this user by the Recommendation Engine. See 2.2Recommendations.

For each shared playlist the client displays the Shared playlist name,the star rating and the member who created the playlist:

-   -   playlist.name    -   playlist.owning_customer_id    -   customer_info.recommend_playlist_set_id    -   playlist.image_set_id    -   playlist_data.calculated_rating        3.4. Buzz Cool Members

A menu option gives access to members who will be interesting to thismember. “You Might Like” members are other members who are similar tothis member. See 2.2 Recommendations for detail of how this list iscreated. Only members who have the “Show Profile” option set on theirEdit My Profile screen and are not already confirmed friends of the userwill be listed here with the following details:

-   -   customer_preference.nickname    -   customer_preference.avatar_image_id    -   customer_info.recommend_customer_set_id    -   customer_data.calculated_rating    -   count of playlist where owning        customer_id=${recommendedCustomerId}        3.5. Another Member Profile

A user can view details of another member of the MusicStation service.When a member is opened from a list of members (e.g. from the 3.4 CoolMembers screen) aspects of their profile are displayed. This screen cannever be shown for a member who has not yet signed up to Buzz and set upat least their member name. The view includes a list of all of thismember's playlists that they have shared. Opening one of these displaysthe playlist.

For each playlist the screen shows the rating and the number of timesthat a track from that playlist has been listened to with a qualifyingplay. If there are no shared playlists then the message “This member hasnot yet shared any playlists.” is displayed in this section under theShared Playlists heading.

In addition, a list of the other member's top tracks is displayed. Thissection (including the title) is only shown if the member beingdisplayed on this screen has the “Show my top tracks” flag set on the3.2 Edit My Profile screen. The list displays this member's top 5tracks. This is the all time top 5 most played tracks by this memberlisted with most popular at the top. The user can select Play on any ofthese tracks. The fields included are:

-   -   customer_preference.nickname    -   customer_preference.avatar_image_id    -   customer_preference.catchphrase    -   customer_data.calculated_rating    -   play_count_otherplaylist (sum of playlist_count.play_count where        playlist.owning_customer_id=${customerId})    -   Customer_count.friend_count (count of customer_to_customer where        customer_id=${customerId} and        customer_to_customer.friend_status=APPROVED)    -   playlist.name    -   playlist_data.calculated_rating    -   playlist_count.play_count    -   playlist.image_set_id        3.6. Buzz Add as Friend

This screen is displayed when a user selects “Add as Friend” option fromthe context sensitive menu anywhere a member is selected. The user cansend a message as part of their friend request.

When the Add as Friend option is selected against a member, and themember is not yet this user's friend a friend request screen isdisplayed with fields for the name of the member the friend request isgoing to and a text body where the member can enter some text which willbe sent to the other member as an introduction as to who they are.Fields include:

-   -   customer_preference.nickname    -   customer_to_customer_request.body        3.6.1. My Friends

A “My Friends” menu option displays a list of this member's friends. Ifthe user has no friends then this displays the message “Your list offriends will be shown here”. In addition a list of this member's pendingfriends requests is dsiplayed. This title and list is not shown if thereare no pending requests. Fields include:

-   -   count of customer_to_customer where customer_id=${customerId}        and customer_to_customer.friend_status=APPROVED    -   from customer_to_customer_request where friend_status=REQUESTED        3.6.2. Add Friend by Name

A user can select an “Add Friend by Name” menu option to add anotheruser by their profile name. This option is only available if this userhas done the Buzz registration and registered their member name. Theuser needs to enter the member name of the friend to send friend requestto. Fields include:

-   -   customer_preference.nickname    -   customer_to_customer_request.body

When the member selects “send” and a member with that name is found(whether that member has their Show Profile option set or not) a

When the member selects “send” and no member of that name is found theuser is notified and asked to re-enter the member name.

When the member selects “send” and that member is already this user'sfriend the user is again notified to this effect

3.6.3. Add Friend by Telephone Number

This screen is displayed when a user selects an “Add Friend by Number”option. The user needs to enter the phone number of the friend to sendfriend request to. We assume that they are entering without the countrycode and the default country code will be that of the country that theservice is associated with. Fields include:

-   -   customer_person.mobile_msisdn    -   customer_to_customer_request.body

When the member selects “send” and a member with that number is found(whether that member has their Show Profile option set or not) a

-   -   When the member selects “send” and no member of that number is        found the user is notified and asked to re-enter the member        name.

When the member selects “send” and that member is already this user'sfriend the user is again notified to this effect

3.7. Send Track or Playlist

This screen is displayed when a user selects a “Send to Friend” optionon a track or playlist anywhere in the context sensitive menus. The usermay select one or more friends to send the track or playlist to. Theuser must have their own member name set and at least one friend for theSend to Friend option to be enabled. Fields include:

-   -   mail_attachment.track_id    -   customer_preference.nickname    -   customer_mail.customer_id    -   mail.body

A list of this member's friends is displayed. The user clicks a friendto select and clicks again to deselect. Any number of friends may beselected. For each friend their rating, number of friends and number oflistens are displayed.

On selecting send a confirmation message is displayed and the user isreturned to their initial screen.

3.8. Send a Message

The client also has the capability od sending a message without theaddition of content identification. The message screen displays thefollowing fields:

customer_mail.customer_id

customer_preference.nickname

mail.body

3.9. Who's Listening

This screen is displayed when a user selects a “Who's Listening” optionfrom the More menu on a track, album, artist or playlist anywhere in themenus. The screen shows the last ten members registered with Buzz whoplayed the item that this user selected Who's Listening option on. Whatis displayed depends on the type of objects the option was selectedagainst as follows:

-   -   Track—the last 10 members to play that track    -   Album—the 10 members to play a track that is in that album    -   Artist—the last 10 memebers to play a track by that artist    -   Playlist—the last 10 members to play a track from that playlist.

The fields are:

-   -   customer_track order by last_play_date    -   customer_release order by last_play_date    -   customer_artist order by last_play_date    -   customer_playlist order by last_play_date        3.10. Inbox

Included in the community views is an “Inbox” that displays all messagesto a user including messages and recommendations from other users.

3.10.1. Inbox Track Recommendation Message Arrived

When a member sends this user a track a message will appear in the Inboxwith the following fields defined:

-   -   mail.kind=MESSAGE    -   mail.from_customer_id    -   mail.sent_date    -   mail.kind=TRACK RECOMMENDATION    -   mail.from_customer_id

If the user opens a message by selecting it then a message screen isdisplayed with the following fields:

-   -   mail.from_customer_id    -   customer_preference.avatar_image_id    -   mail.sent_date    -   mail_attachment.track_id

Recommended tracks. Albums, artists or playlist names appear highlightedin the message and as a user scrolls through the message each subsequentone is highlighted.

Clicking on a track name has the same behaviour as if the user hadselected Add to Playing on a track in a track list. I.e. the track willbe added to the end of the current playlist and a popup displayednotifying the user of this.

3.10.2. Inbox Playlist Recommendation Message Arrived

When a member sends this user a playlist a message will appear in theInbox with:

mail.from_customer_id

mail.kind=PLAYLIST RECOMMENDATION

mail_attachment.playlist_id

If the user opens a message by selecting it then a message screen isdisplayed with the following fields:

-   -   mail.from_customer_id    -   customer_preference.avatar_image_id    -   mail.sent_date    -   mail.body    -   mail_attachment.playlist_id        3.10.3. Inbox Friend Request Message Arrived

When another member makes a friend request to this member then a messagewill appear in this member's inbox. When opened they have chance toapprove or deny it. We do this within a popup since the user is beingasked for interaction. The message heading displays:

-   -   customer_to_customer_request.to_customer_id    -   customer_to_customer_request.fiend_status=REQUESTED

Opening the message displays:

customer_to_customer_request.to_customer_id

customer_to_customer_request.body

Selecting continue displays a pop-up with the options:

-   -   Approve—only displayed if Friend Request highlight (don't grey        out since for vast majority of Inbox items this option is not        relevant)    -   Deny—only displayed if Friend Request highlight    -   Block—only displayed if Friend Request highlight    -   Report Abuse—only displayed if Friend Request highlight

The users response is stored in:

-   -   customer_to_customer_request.response (APPROVED, DENIED,        BLOCKED, ABUSED)        3.10.4. Inbox Friend Request Response Arrived

When a member responds to a friend request from this user then thatresponse will appear in this member's inbox. There are three possibleresponses that this member will see depending on whether the othermember accepted, denied or blocked the friend request:

-   -   customer_to_customer_request.friend_status

The table in FIG. 43 shows the title, content and result of theresponses.

3.10.5. Inbox Text Message Arrived

A text message is similarly displayed in the Inbox and the relevantfields are:

-   -   mail.from_customer_id    -   customer_preference.avatar_image_id    -   mail.sent_date    -   mail.body        3.11. General Message Alerts and Expiry        3.11.1. Message Alerts

When a message or messages arrive for a member then we display one ofthe small popups at the base of the screen. The popup will be displayedonce for each group of messages that arrive, and can be displayed assoon as the server has passed those messages to the client. The nextmessages will be checked for and displayed 2 seconds after the clienthas snapped back to the Now Playing screen so as not to interrupt theuser flow. If there is no Current Playlist then the popup is displayed 2seconds after when the client would have snapped back if there had beena Current Playlist.

After one popup has been read and acknowledged then if any more messagesarrive during this session then another popup will be displayed.

Messages sent while this member was offline will therefore likely bedisplayed soon after they start the application.

3.11.2. Message Expiry

Read messages will be expired 1 day after they have been read. Unreadmessages will be expired 5 days after the user has been alerted to theirexistence. Unread messages will be expired 30 days if the user has notbeen in the application and hence not been alerted to their existence.

Expired messages will be removed from the Inbox at a convenient time. Itis not essential that the expiry periods are adhered to exactly. Forexample they might be removed from the Inbox at the start of the nextsession after their expiry. An additional field is therefore defined forthe date mail is received:

-   -   customer_mail.received_date        4. Graphic User Interface (GUI) Features

Appendix 1 describes the GUI.

5. Communications Architecture

5.1.mCom

5.1.1. Overview

MusicStation client applications are required to connect to theMusicStation server to download and upload various data. The protocolthat MusicStation uses to connect to the server must be capable of beingimplemented on a variety of client technologies, e.g. Java, Symbian, andWindows Mobile. It must also solve the issues documented in the document“Connected MusicStation Issues and Requirements”

5.1.1.1. Protocol History

MyFone used HTTP to transfer data. This experience showed up severalissues with the HTTP request and response having to pass throughoperator gateways. Operator gateways and various mobile phones regularlyinterfered with the HTTP headers, usually by failing to forward them.This is one of the key factors that led to the creation of thisprotocol.

To transfer several files in one response, this protocol tookinspiration from MIME. An earlier revision of this document used MIMElike boundaries to separate the different files in the response. Thiswas changed to use the offset and length notation in the header. Thisallows a client to quickly access the data objects. Only the headerneeds to be parsed, and not the body contents. (see section 3.2.7)

Previously status codes used a binary representation to allow them to beextensible whilst still being understood by older clients. This has beensimplified to use integer values that can be easily understood by humansas well as by the client. The server sending the most appropriate statuscode to the client addresses the issue of introducing new status codes.The server will only ever send status codes that the connected clientversion understands.

It was previously not possible to uniquely identify acknowledgments ifthe same file had been requested several times in a session, or if theacknowledgement was sent in a different session to the session that thedata file was sent in. The acknowledgement id principle used in Sent andPut lines solves this issue.

5.1.1.2. Protocol Overview

The client must initiate all communication because of the way in whichmobile phones connect to the internet. As the mobile phone does not havea static IP address, and because it will usually connect via a mobileoperator gateway there is no way for the server to initiate thecommunication. MIDP2.0 handsets could use the Push Registryfunctionality to send an SMS to the application requesting that theclient makes a request to the server, but this functionality may not beavailable on all target handsets and client platforms, so therefore theMusicStation protocol should be based upon the client initiating thecommunication.

The protocol must be able to run over HTTP and TCP/IP socketconnections. These are the two most commonly available connections madeavailable to us by the client platforms.

The protocol will assume a reliable transport layer. The protocol willnot need to be able to re-request individual packets of a particularresponse. Therefore UDP socket connections will not be a supportedtransport mechanism. To support an unreliable transport layer wouldrequire a lot of extra functionality in the MusicStation protocol andTCP is available on all clients that have UDP.

The protocol must be able to support the client transferring data to theserver as well as the client making requests for data from the server.This is required so that error data, logging data, usage data, playlistinformation and user related data can be transferred from the clients tothe server.

As the MusicStation is a request/response protocol it is modelledclosely on HTTP, borrowing several of HTTPs features.

The MusicStation protocol is text based using the ASCII character setonly, this is so that it can be implemented on many different clientplatforms without any of the encoding issues associated with binarydata.

The diagram below shows the request/response flow between the client andthe server. This is an example of a simple request from the client beingfulfilled by the server. All client/server communication happens in thissame basic way. See FIG. 44 Request/response flow between client andserver

The next diagram shows how the server sends a request to the client. Asthe client/server communication must always be triggered by a clientrequest, the only way for the server to make a request from the clientis for the server to piggyback the request on a response it sends to theclient. See FIG. 45 Server sending a request to the client.

Note that in normal operation the server will always respond to a clientrequest, even if there is no data in the response. The response mayinclude just a status code (see ‘The Server “Response” protocol’section).

Robot clients and requests exceeding a requests per minute threshold arenot normal operation, and the server has no obligation to respond tothese requests. Real clients that do not receive a server response areexpected to retry the request after a reasonable time.

Like HTTP the MusicStation Protocol uses a header to hold the meta-dataabout the body of the message, which contains the actual data beingtransferred. This document describes the protocol, which is concernedwith just these headers. The body of the message can differ for thevarious client implementations. Like HTTP the header and body areseparated by an empty line.

5.1.2. The Client Request Protocol

5.1.2.1. Header

5.1.2.1.1. The Protocol Identifier

The first part of any request will be the protocol identifier. This isso that the server receiving this request can validate that the data ithas received is indeed from a client. The protocol identifier should beshort so that it does not put an overhead on the request. The protocolidentifier used by MusicStation is:

MSTP

This stands for MusicStation Transfer Protocol.

5.1.2.1.2. The Protocol Version Number

Along with the protocol identifier is the protocol version number. Thisprotocol identifier is entirely separate from the client version number,the server version number and the data objects used by the clientversion number.

There can be many different versions of the client application that willall use the same protocol version number.

The protocol version number will be in the form major minor

The minor number should be increased for incremental changes to theprotocol, and the major number should be increased with significantchanges to the protocol. Initial development versions of the protocolwill have a major number of 0. This will be incremented to 1 on thefirst production release of the protocol.

The server software should always be able to handle every releasedversion of the protocol so that it is backwardly compatible with allolder client versions.

The protocol version number will be on the same line as the protocolidentifier, and separated from the protocol identifier by a forwardslash.

MSTP/0.1

This line indicates that this is version 0.1 of the MusicStationprotocol.

5.1.2.1.3. The Request Identifier

Each request sent by a MusicStation client will include an identifier.This identifier must be unique to this request in the current session.There is no requirement for the request identifier to be globallyunique. This request identifier can be any string up to 32 characterslong.

This could be implemented as an integer starting at 1 and beingincremented for every request made by the client.

This request identifier is required so that the server can identifyduplicate requests from clients. MyFone experience has shown that mobilephone client requests can sometimes be very unreliable. This means thatthe client must be able to automatically retry a request if it has notreceived a response within a reasonable amount of time.

When the client has not received a response, this could be because therequest never got as far as the server, or it could be because theserver's response got lost in the operator gateway on it's way back tothe client.

By including the request identifier it is straightforward for the serverto identify duplicate requests.

The client must send the same request identifier for any re-triedrequests.

The request identifier can come at any point underneath the requestidentifier and request version number.

MSTP/0.1

RequestId: 123456

This identifies a request by this client. If the client retries thisrequest, the request id in the retry must by 123456.

5.1.2.1.4. Client Name and Version Number

Every request must include the client name and version number. Thisinformation can then be used on the server to perform a look up of theabilities of this client. This means that new abilities can be added atany time to the client without having to change the information given inthe protocol.

For example, if a client identifies itself as the MIDP version 0.4.6client, then the server knows which format it need to return the dataobjects in. The server also knows what music encoding is supported bythis client. And the server knows that this client does not supportencrypted music files.

MSTP/0.1

RequestId: 123457

Client: MusicStation 0.4.6 MIDP Nokia/N70

This identifies the client as the Java client version 0.4.6 running on aNokia N70 handset.

The server can then look up which abilities this client has.

The format of this string:

“MusicStation” [major].[minor].[micro] “Variant name” “Platformidentifier”

See FIG. 46 for details.

5.1.2.1.5. User's globally unique identifier

Every request must include the user's globally unique identifier. Theone exception to this is the initial registration request. If a requestdoes not include the user's globally unique identifier, then the serverwill respond with notification that the client is required to register.

This globally unique identifier allows the server to lookup variousinformation about the user.

The client should not construct the globally unique identifier. Theidentifier will be created by the server during the registrationprocess, and then assigned to the client. The client must then includethis identifier in every subsequent request.

MSTP/0.1

RequestId: 123458

Client: MusicStation 0.4.6 MIDP Nokia/N70

UserGUID: AB12YZ

This identifies the user with the Globally Unique Identifier AB12YZ. Theserver can use this information to look up user details such aspreferred language, territory, operator and branding.

5.1.2.2. Data Requests

5.1.2.2.1. Basic Data Request

Most of the requests from the client will be a request for data from theclient. For example the client may request the latest news from theserver.

MSTP/0.1

RequestId: 123459

Client: MusicStation 0.4.6 MIDP Nokia/N70

UserGUID: AB12YZ

Get: inbox.data

This is an example of a request for the inbox.data data object file.

5.1.2.2.2. Data Request with Path Information

Data requests may also have path information associated with them. Thisuses a syntax similar to HTTP URLs. A/(forward slash) character is usedas a directory separator.

MSTP/0.1

RequestId: 123459

Client: MusicStation 0.4.6 MIDP Nokia/N70

UserGUID: AB12YZ

Get: games/namethattune/question.data

This is an example of a request for the question.data data object filewhich has the path games/namethattune.

5.1.2.2.3. Data Request with Query

Data requests may optionally include parameters that the server will useto construct the data object to be returned to the client. This requestdata is included by using HTTP query string syntax.

MSTP/0.1

RequestId: 123460

Client: MusicStation 0.4.6 MIDP Nokia/N70

UserGUID: AB12YZ

Get: advncedSearch.data?type=artist&query=artist%20name&country=uk&language=en

This is an example of a request for the advanced search results. Therequested resource has a ? (question mark) character to separate thename of the requested resource from the parameters for this resource.The parameters are name/value pairs. Each name/value pair is delimitedby a & (ampersand) character, and the name and value part are separatedby an = (equal sign).

The values have been URL encoded, so that the space character in thesearch term “artist name” has been replaced by the URL encoded version%20.

5.1.2.2.4. Data Request with Multiple Requests

The client may request multiple resources from the server at the sametime. To do this, the client sends several GET lines, one for eachresource requested.

MSTP/0.1

RequestId: 123461

Client: MusicStation 0.4.6 MIDP Nokia/N70

UserGUID: AB12YZ

Get: inbox.data

Get: charts.data

This is an example of a request for the inbox.data file and a requestfor a charts.data file. A situation like this may occur when the clientis making a request for a resource it requires immediately (in thisexample inbox.data), and is also required to update a resource in thebackground (in this example charts.data).

The GET lines should be ordered in the priority that the client wouldlike the receive the resources in the server response.

Occasionally the client may have a partial response cached, and requireonly some of the data returned from the server. In cases like this, theclient may want to make a request for only a certain part of the data.

The client can do this by using the range parameters on a GET line. Therange parameters are separated from the requested resource name by a ;(semi colon) character.

If there is more than one range parameter then the range parameters areseparated by a ; (semi colon) character.

The range parameters are from and to. Both of these should be followedby an = (equal sign) character, and then an integer number of bytes.

5.1.2.2.5. Partial Data Request

Below is an example of a partial request for the inbox.data file. Theclient is requesting all of the inbox.data file from the 34th byteonwards.

MSTP/0.1

RequestId: 123462

Client: MusicStation 0.4.6 MIDP Nokia/N70

UserGUID: AB12YZ

Get: inbox.data; from=34

Below is an example of a partial request for the inbox.data file. Theclient is requesting all of the inbox.data file from the 128th byte upuntil the 256th byte.

MSTP/0.1

RequestId: 123463

Client: MusicStation 0.4.6 MIDP Nokia/N70

UserGUID: AB12YZ

Get: charts.data; from=128; to =256

When making a range request, the client should not expect the returneddata to be of the range asked for. The server response will include thedetails of the range returned, and the client should use the rangeinformation in the server response, and not the range information init's own request for further processing. This is because the server mayhave a reason for returning a different range of data. For example ifthe data has changed since the client last requested it.

5.1.2.3. Sending Data to Server

On occasions the client may need to send data to the server. Forexample, to send error information to the server. The client can do thisby using the put line.

A Put line has several parts. Each part is separated by a ; (semicolon).

Put: error.data; ackId=1; offset=0; length=160;type=“application/octet-stream”

where: see FIG. 47 for details of error data.

This is an example of the client sending error data to the server. SeeFIG. 48.

The block of zeros and ones signifies the body of the message. This isthe binary data that is being transferred by this protocol. The formatof this data is outside the scope of this protocol because the formatwill differ depending on the client implementation technology.

The data in the body starts at position 0, and has a length of 160bytes. The offset and length values in the Put line reflect thisinformation.

The content type in the Put line tells the server how to interpret thisdata.

5.1.2.3.1. Send Data with Multiple Puts

The client may be required to send multiple resources to the server atthe same time. In a similar way to using multiple Get lines, the clientmay send multiple Put lines.

See FIG. 49 for an example of the client sending error data and a phototo the server.

In the body of the request, the error data is shown in bolder text tothe photo data. The length and offset positions in the request tell theserver the offset into this data, and the length of the data.

5.1.2.3.2. Send Data with Parameters

In a similar way to the Get line, the Put line also supports parameterson a Put.

The syntax for this is the same as the Get line syntax, which ismodelled on the HTTP query string syntax.

In FIG. 50 is an example of the server sending a Jpeg photo with asingle parameter (name=“Fave Tracks”).

Note, although the Put line is very similar to the Get line, the Putline does not support the range values From and To. A failed Put willrequire a full resend of the data. The client will know whether the Puthas failed because it will not receive an acknowledgment receipt fromthe server (see ‘The server “Response” protocol’ section)

5.1.2.3.3. Client Acknowledgements

So that the server can always have perfect knowledge of what data existson each client, the client is required to acknowledge the receipt ofevery piece of data sent to it by the server. This is done by sendingone Ack line for each data file successfully received and stored.

The Ack line parameter is the acklD assigned by the server when it sendsthe file.

MSTP/0.1

RequestId: 123466

Client: MusicStation 0.4.6 MIDP Nokia/N70

UserGUID: AB12YZ

Ack: 2006061911030001CHARTS

This request shows the client acknowledging that it has successfullyreceived and stored the data file which had an assigned acknowledgmentid of 2006061911030001CHARTS.

The client must only acknowledge fully received files. It must neveracknowledge partially received files. If a client partially receives afile, it should make a Get range request for the rest of the data. Onceall of the data has been received and stored, the client can then sendthe acknowledgement for this data.

5.1.2.3.4. Client Acknowledgment with Multiple Acks

A request may include multiple acknowledgement lines.

MSTP/0.1

RequestId: 123466

Client: MusicStation 0.4.6 MIDP Nokia/N70

UserGUID: AB12YZ

Ack: 2006061911030001CHARTS

Ack: 2006061911030001INBOX

This request shows the client acknowledging that it has successfullyreceived and stored the data files with acknowledgement ids of2006061911030001CHARTS and 2006061911030001INBOX.

5.1.2.3.5. Not Acknowledged Notification

If the client does not successfully receive and store a data file it hasrequested, it should send a Not Acknowledged notification to the server.

MSTP/0.1

RequestId: 123466

Client: MusicStation 0.4.6 MIDP Nokia/N70

UserGUID: AB12YZ

Nak: 2006061911030001CHARTS

This request shows the client telling the server that there was aproblem with the receiving or storing of the data file withacknowledgement id 2006061911030001CHARTS. The server will now know thatthis file does not exist on the client.

Usually when the client sends a Nak, it is very likely to have someaccompanying error data that explains the reason for the Nak. If theserver receives a Nak, and no error data, it may want to ask the clientto send the log file details. If the client persistently sends Naks tothe server, the server may want to increase the logging level on theclient to help identify the cause.

5.1.2.4. Session Identifier

Each request the client sends to the server should include a sessionidentifier. The client should not remember this session identifierbetween restarts. On the first request after starting up, the clientshould not include a session identifier. The server will respond bysending back a new session identifier. The client should then includethis identifier in every subsequent request until the user closes theclient.

MSTP/0.1

RequestId: 123467

Client: MusicStation 0.4.6 MIDP Nokia/N70

UserGUID: AB12YZ

SessionId: FJSKNBKSKSDKFLSH

Get: inbox.data

This request shows the client has previously been assigned a sessionidentifier of FJSKNBKSKSDKFLSH.

For more details on how the client gets this session identifier see the‘Server “Response” protocol’ section.

5.1.3. The Server Response protocol

5.1.3.1. Header

5.1.3.1.1. The Protocol Identifier

The protocol identifier used in the server response should be identicalto the client request protocol identifier. Clients should check thisidentifier so that they know the response if in the MusicStationProtocol format.

The protocol identifier used by MusicStation is:

MSTP

5.1.3.1.2. The Protocol Version Number

The server can support many different versions of the protocol at thesame time. The server should always respond with the same protocolversion number as the client used in the request. This is because thisis the only protocol version number the server can be sure that theclient supports.

Along with the protocol identifier, the client should check the protocolversion number in the response to so that they know the protocol versionbeing used is a version that they understand.

MSTP/0.1

This is an example of the server sending the MusicStation TransferProtocol identifier and using protocol version number 0.1.

5.1.3.1.3. Response Status Codes

With each response the server will send a status code. The status codesare shown in FIG. 51.

The status codes are always 4 digits. This is to allow enough codes toallow for future expansion. 3 digit codes have not been used to avoidconfusion with HTTP status codes.

The status codes are extensible, new codes can be added at any time. Theserver will make sure that clients are only ever sent status codes thatthe client understands.

The status codes are grouped into 2 sections. Codes starting with thedigit 1 (i.e. 1000-1999) are to be used for codes relating to asuccessful operation. Codes starting with the digit 2 (i.e. 4000-5999)are to be used for a failed operation.

Within the failure range of codes, there are two further groups. Codesstarting with the digits 4 (i.e. 4000-4999) are to be used for failurewhen the client is at fault. Codes starting with the digitis 5 (i.e.5000-5999) are to be used for failure when the server is at fault.

This example below shows a successful response from the server.

MSTP/0.1

StatusCode: 1000

5.1.3.1.4. The Response Identifier

So that the client can verify that the response it receives is inresponse to the request it made, each response from the server will echothe client's request identifier.

MSTP/0.1

StatusCode: 1000

ResponseId: 234567

This example shows the server response to the client request with arequest id of 234567.

5.1.3.2. Setting the Session Identifier

The first request from the client each time it is started up will notcontain a session identifier. The server should respond to this requestwith a newly assigned session identifier.

MSTP/0.1

StatusCode: 1000

ResponseId: 234568

SetSessionId: FJSKNBKSKSDKFLSR

This response shows the server setting the session id toFJSKNBKSKSDKFLSR.

If the client receives any response with a SetSessionId line, then theclient must start using the new session id immediately. There may becases where the server assigns a new session id to a client that alreadyhas a session id. For example this could happen when the session hastimed-out on the server.

5.1.3.3. Sending Data

Most responses from the server are likely to include at least one dataobject file. Theses data files are sent in the body of the response.

For each Get line sent in the request by the client, the server shouldreturn a Sent line.

The server must generate an acknowledgement id that it sends along withthe data. This is so that when the server receives an Ack line, it knowswhich data is being acknowledged. It is the servers responsibility togenerate these acknowledgement ids in a way that uniquely identifies thedata file sent.

The Sent line must include the byte offset position into the body ofdata where the client can find the data, it must also include the lengthof the data and the content type of the data. Byte offset and length areused in the MusicStation protocol because they make for relativelystraightforward processing. This has been used in preference to aboundary parameter as used in multipart MIME.

This response in FIG. 52 shows the server sending the news1.data file.

5.1.3.3.1. Sending Multiple Data Files in a Response

The server may also send multiple data files in a single response. Thisis done with multiple Sent lines in the same way as the client sendsresources to the server with multiple Put lines.

The response in FIG. 53 shows the server sending the news2.data andnews3.data files.

In the body of the response the data is shown in bold text. The clientknows which body data is for which data file because of the offset andlength parameters on the Sent line.

5.1.3.3.2. Partial Data Request

If a client request was for a certain range of data, and the serversends only this range of data, then the server response must indicatewhich range of data has been sent. See FIG. 54.

This response shows that the data returned at is the data from byte 160to the end. There are 40 bytes of this data, and they are positioned at0 bytes into the body of the data (i.e. the start of the body).

Note that the offset value is an index into the body of the data and isnot to do with the range values.

The range to value may be used in a Sent line to show that the data inthe response does not go to the end of the data file.

The client should always read the response headers and use these toprocess the data rather than the client sent request headers. This isbecause the range requested might not be the range returned if theserver has a reason to return the full data file.

5.1.3.3.3. Push Data to the Client

The server may also send Sent lines for data it wants to push to theclient. This is done by the server sending a Sent line that the clienthad not sent a corresponding Get line in the request. See FIG. 55.

This response shows the server sending the news1.data and thecommand.data file. Any pushed data should always follow the requesteddata in the response body.

5.1.3.4. Acknowledgements

5.1.3.4.1. Acknowledging Received Data

When the client sends data to the server (for example error data), theserver must acknowledge the receipt of this data so that the clientknows the server has successfully received this data.

MSTP/0.1

StatusCode: 1000

ResponseId: 234569

Ack: 3

This response shows the server acknowledging the receipt of the datafile which the client sent in a Put line and the client assigned aacknowledgment id of 3.

5.1.3.4.2. Sending a not Acknowledged Notification

Equally the server can negatively acknowledge the receipt of the data ifthere has been an issue receiving or storing the data. This will allowthe client to resend the data.

MSTP/0.1

StatusCode: 1000

ResponseId: 234569

Nak: 4

This response shows the server acknowledging the failed receipt of thedata file which the client assigned an acknowledgement id of 4.

5.1.3.4.3. Acknowledment Requests

If the server has sent data to the client, and then in the next requestwith a different request id from the client the server did not receivean acknowledgement for that data, then the server can ask the client toacknowledge whether it has received the data or not.

This is done by the server sending anAckRequired line in the response.

MSTP/0.1

StatusCode: 1000

ResponseId: 234574

AckRequired: 20060619111230NEWS2

This is an example of the server asking the client to acknowledge thedata file that was previously sent with an acknowledgement id of20060619111230NEWS2.

Note that the server is not required to ask for acknowledgements of datafiles, the client should send the automatically. The AckRequired line isused when the connection is less than perfect and a previously sentacknowledgement from the client has not reached the server for somereason.

5.1.4. Connection Levels

Clients will have varying levels of connection speed, reliability,bandwidth and latency. Each client data object request will have apredefined priority level associated with it.

The client will dynamically change it's connectivity level thresholdbased upon the available bandwidth and the number of successfulconnections.

The priority levels are

-   -   IMMEDIATE—The client must send this request immediately, and not        queue this request. This should be used for requesting data        objects that are required to show the screen requested by the        user.    -   SOON—This client may send this request immediately if the        network speed/bandwidth is available. This information is useful        to the server in deciding what data objects to push to the        client.    -   WHENEVER—The client does not need to need to send this        information to the server in any time critical period. The        server needs to be informed of this information, but the data        can be sent along with the next request.

The client can calculate its bandwidth based upon the time it takes totransfer a large amount of data. This is probably best done whentransferring an audio file.

The client can calculate its connectivity threshold based upon thebandwidth and the number of successful connections, and the number ofconnections that are interrupted to send a higher priority request.

Clients with a good connectivity will have a connectivity threshold thatallows all messages of priority SOON or above to be sent immediately.

Client with a poor connectivity will have a connectivity threshold ofthat only allows IMMEDIATE messages to be sent immediately.

5.1.5. Command Data Objects

In MusicStation MIDP 0.4.6 the only data objects that exist are contentdata objects. A new type of data object is required in the connectedMusicStation version. These are required so that the server can requestor send various data to the client. These data objects are sent by theMusicStation Transfer Protocol, but are not part of the MusicStationTransfer Protocol. They are not part of the protocol because differentcommand objects will be used for different client implementations, butthe same transfer protocol will be used for all implementations.

5.1.5.1. Server Command Data Objects

In addition to content data objects and image files the server needs tobe able to send the following commands to the client

-   -   Please send total file space size to the server.    -   Please send remaining file space size to the server.    -   Please send log file to the server.    -   Please send errors to the server.    -   Please change client logging level.    -   Set property.    -   Get property.    -   Please delete a file.    -   Please send details of what files you have.    -   Please send bandwidth details.    -   Please change connection level.    -   Please request data file.    -   Please request audio file.    -   Registration data.

Items are likely to be added to this list as new functionality is addedto the client and server.

It's worth noting that the server will frequently be more aware of theclient's connection details than the client is. For example a MIDPclient on a Nokia N80 has no way of knowing whether the HTTP connectionis via an operator gateway, or whether it's via a Wireless LAN. Theserver will know whether the client connection is via an operatorgateway because the connection will be coming from a known operator IPaddress range.

5.1.5.2. Client Command Data Objects

The client needs to be able to send the following data to the server

-   -   Playlist data.    -   Image files.    -   Total file space.    -   Available file space.    -   Log file data.    -   Current logging level.    -   Error info.    -   Info on which files have been deleted to free up space for other        files.    -   Current bandwidth level.    -   Data file used.    -   Screen shown.    -   Property value.    -   Current client time.    -   Registration data.        5.1.5.3. Timings

The server will be recording the time that various client events haveoccurred.

Clients should report times to the server in the number of seconds sincemidnight GMT on 1 Jan. 1970.

For Example, in MIDP1.0, this can be obtained by:

Calendar.getInstance(TimeZone.getTimeZone(“GMT”)).getTime( ).getTime( )

The MIDP specification says that the GMT timezone must be supported, butif for some reason it is not supported, then the handset can simply use

(new Date( ).getTime( ) to get the client time.

Each client stores timing data using it's own time settings. When thisdata is transferred to the server, the server can then convert and storethese event timings in it's own format.

The server will do this by comparing the clients local time, with it'sown time. The delta between client reported times and server times canthen be calculated.

The current client time command object must contain the time that thedata is sent to the server so that the server calculated time is asaccurate as possible.

5.2. Client Data Synchronisation

5.2.1. Introduction

Most screens in MusicStation are populated by data. This data istransferred from the server and stored locally in files on the client.When data on the server changes the files on the client need to beupdated to reflect those changes. Also, the user is able to create andmodify files on the client, for example adding tracks to a playlist.These changes need to be reliable communicated back to the server.

The user can also make changes to data through MusicMate. These changesmay conflict with changes made on the device. The client and server needto be able to synchronize their data and the server will handle anyconflict resolution.

5.2.2. Data Objects

Data Objects are the basic unit of object that is passed between theserver and client and client and server. They encapsulate therepresentation of some entity that is displayed within the clientinterface (such as an artist, album, etc) or data and needs to be sentback to the server (like a user-defined playlist). They are passedbetween the server and client and are stored securely on the phone. Dataobjects can be delivered to the client by the server at anytime that itneeds to update something on the client.

The data objects are able to write themselves to a file and these areused to transfer data between the client and server. The file headercontains the data object version used to write the file. The latestversions of the data objects are able to read and write files in allsupported versions. The version is passed to each read and write methodand this allows us to switch what gets read or written based on theversion.

Using this method the server is able to write data object files forolder versions of the client. The target version is set in the fileheader and then each write method ensures that the output is in theformat for that version.

The server is also able to read files written by an older client usingthe same method. When the file is read into the data object the readmethod uses the version to switch what attributes are read from thefile.

Data objects contain the data used to populate screens in MusicStation.They use methods that allow them to write and read themselves to andfrom a file or stream. They are used to transfer data between the clientand server and to load and store data locally in files on the memorycard.

5.2.2.1. Data Object Groups

A data object can contain a collection of other data objects, forexample an Artist data object contains a collection of Releases. Inturn, a Release contains a collection of Tracks. See FIG. 56.

Data object can also store lists of objects, for example ArtistGroupstores a list of Artists. The ‘My Artists’ screen uses an ArtistGroupdata object to display all artists owned by the user. Because Artistcontains Releases and a Release contains Tracks, Artist and Release arealso data object groups.

5.2.2.2. Data Object Views

A data object view provides a sorted and filtered view of a data objectgroup. All screens in MusicStation that are populated by data are backedby one or more views. Any changes to a data object group are propagatedto the view, which is responsible for updating the screen to reflectthese changes.

This allows us to display a screen immediately before a data object isloaded. As the data object is loaded in the background these changesresult in updates to the screen, for example the list of Artists on the‘My Artists’ screen grows as each Artist is loaded.

5.2.3. Data Object Files

Each data object group is stored locally in a file. For example, the ‘MyArtists’ ArtistGroup is stored in its own file. If the user owns 100artists, each with an average of 2 albums• containing 10 tracks thisdata object soon becomes very large. When this ArtistGroup object iswritten it will create a large file and when it is read back from thefile it will take a while to populate. •The user doesn't have to ownboth albums but both albums exist in the artist data object

An alternative method is to store each collection of objects in its ownfile. So in our ‘My Artists’ example the list of Artists is stored in afile (userartists.data) but the list of albums for each artist is not.The list of albums is stored in a separate artist file, one for eachartist (e.g. artist.123.data). Each album is then stored in its own file(release.4567.data) that contains the tracks. See FIG. 57.

Because each data object is stored in its own file, object groups canuse the same data object without having to duplicate the data. Forexample ‘Snow Patrol’ are in the ‘My Artists’ group and the ‘PopularArtists’ group. If the user buys ‘Chasing Cars’ from the ‘Eyes Open’album we only have to update the ‘Eyes Open’ album data file. When theuser navigates to ‘Popular Artists’ then ‘Snow Patrol’ the screen willshow that the user has bought ‘Chasing Cars’. See FIG. 58.

However this approach presents its own set of issues. Because the ‘MyArtists’ data file only contains a list of artist ids, we need to openeach artist file and read the name of each artist to populate the ‘MyArtists’ screen. There are several major problems with this approach.Firstly, we need every artist file stored locally so any missing filesneed to be downloaded from the server. Without these files we are unableto display the artist names. Secondly, it's relatively expensive to opena new file connection for each artist in the list so this approach willbe slow.

To avoid this we can store the artist name as well as the id in the ‘MyArtists’ data file. This means we can build the ‘My Artists’ listquickly. However we are then introducing redundancy because the name isnow stored in both the artist group data file and the artist data file.See FIG. 59

We also may want to sort or filter the list on another property. Forexample ‘Search Results’ show user owned artists at the top of the list.To do this we need the owner property as well as the name to display thelist. This is more redundant data that we are adding to the group datafile.

Because an object can be stored in many groups we need to be aware ofthis redundancy and make sure that either the client or the server takesresponsibility for the updates. In general the server will beresponsible for these updates and they will be transferred to the clientin response to a client request. Whenever it is possible for thesechanges to occur when the client is offline, the client will takeresponsibility for propagating these changes. In these cases, the clientwill update the local files whether online or offline. For example whena customer modifies a playlist image, any playlist groups that containthat playlist must be updated.

5.2.4. Data Object Transfer

Data objects are transferred between the client and the server using theConnected MusicStation Protocol. It is expected that most communicationwith the client will be over HTTP therefore the client will beresponsible for making the initial request.

5.2.4.1. Client Request

The client won't always know where objects are duplicated on the memorycard. For example the ‘Popular Artists’ group was pushed to the clienthowever the client has never opened ‘Popular Artists’ and is unawarethat when the user buys ‘Chasing Cars’ by ‘Snow Patrol’ that the‘Popular Artists’ data file needs to be updated to reflect this. Howeverthe server does have this knowledge because it built the ‘PopularArtists’ data file and sent this file to the client.

For this reason the server is responsible for updating files on theclient when records on the server are modified. When the customerpurchases ‘Chasing Cars’ the server will calculate which data files onthe client contain ‘Chasing Cars’ and therefore need to be updated. Theserver will then either push these updated objects with the purchaseresponse or send commands to the client to update these files when itcan. It is preferable that the response contains all data objects thathave been modified as a result of the request. See FIG. 60: Client setsobject and gets all modified objects.

5.2.4.2. Data Object Push

When records are updated on the server whilst the client is offline andthese changes need to be propagated to the client the server will pushthese to the client on the next request. For example, if the customerpurchases ‘Chasing Cars’ from MusicMate, when the client next connectsto the server any objects that need to be updated will be pushed to theclient. See FIG. 61 Client requests object and gets all modifiedobjects.

5.2.4.3. Offline Mode

When the client is offline, the customer is prevented from performingmost actions that can modify data. For example, they are not able to buya track.

However, they should be able to create, edit and share playlists. Theclient needs to maintain a list of files that have been edited on theclient but have not been sent to the server. When the client is nextconnected it must send these files to the server. All changes made bythe client are sent to the server when the client next connects. Theserver will then return any modified files to the client. See FIG. 62Client sends objects modified in offline mode.

5.2.5. Change Log

The server maintains a list of objects that have been sent to theclient. When one or more of these objects are modified on the server,the modified objects must be delivered to the client as soon aspossible. Similarly the client maintains a list of objects that havebeen created or modified on the client and need to be updated on theserver.

The object_change_log table is where changes that don't need to be sentimmediately are stored. This is for general system wide changes such asadding a new artist. This table also handles merging changes made fromseveral databases. These changes are communicated when a user session isnext created.

Customer specific changes occur in customer_object_change_log. Thesechanges are communicated to the client immediately.

5.2.5.1. Server Objects

The changes to objects on the server are stored in the object_change_logtable. Whenever a record is inserted, updated or deleted that may affectone or more object data files one or more records are inserted into thistable. This table also allows for changes to made in a separatedatabase, for example on a staging server, and then when the changes areimported the object_change_log is also imported. See FIG. 63 objectchange log.

The list of data objects that exist on the client are stored on theserver in the customer_object table. Whenever a session is created forthe client we query the customer_object and the object_change_log tablesto determine which objects have changed for this customer. It ispossible that this query could return several change records for asingle object. In this case we only need to consider the last changerecord. The objects that have changed need to be returned to the client.See FIG. 64 customer object.

Objects that need to be returned to the client are inserted into thecustomer_object_change_log table. Records may also be inserted into thistable when changes occur for objects that affect only one customer. Forexample when the customer purchases a track and we need to update objectdata files that reference that track. See FIG. 65 customer object changelog.

Whenever we receive a request from a client we'd like to return allmodified objects in the response. In some situations (where bandwidth islimited or the objects are large) we may send a command to the client torequest the modified objects later. In situations where many objectsneed to be returned to the client, the priority field is used todetermine which objects are sent first.

To get the list of modified objects for a client we select from thecustomer_object_change_log table where acknowledgement_date is null.

At first glance it appears that the object_modified_date would beduplicated for each object_guid and could be separated into anothertable. However for performance reasons object data files on the clientcontain data from more than one table and an object may need updating onone client and not on another. For example, artist lists containownership information for each artist so that they can be sorted withuser owned artists at the top. When a customer buys a track by an artistonly that customer's artist list has been modified and needs to beupdated.

One or more of the following methods could be used to update theobject_change_log and customer_object_change_log tables:

-   -   Database trigger on a table could populate the object_change_log        table when data was added, updated or deleted.    -   Batch process populates the object_change_log table for example        on an import of new content data.    -   Entity Listeners or callback methods are used on EJB persist,        update and remove events.

In most cases callback methods are the most appropriate however forlarge inserts, for example a data load, it may be more efficient to useanother method.

5.2.5.2. Client Objects

The client must also keep a log of changes that need to be sent to theserver. The client maintains this list in RMS. Each change is stored ina ChangeLogRecord object. See FIG. 66.

The objectGUID will be the same GUID used to identify the object on theserver unless the client has added this object. In which case the clientwill assign a temporary GUID that will be used until the server updatesthe object with its new server generated GUID.

Whenever the client connects to the server it will send all of theobjects in the change log. The server should respond with anacknowledgement for each object. When the client receives anacknowledgement it will then delete the corresponding ChangeLogRecord.

5.2.6. Conflict Resolution

When conflicts occur because the same object has been modified on theclient and server the server is responsible for resolving the conflict.The server communicates the resolution to the client by sending it theupdated object.

We'll attempt to minimize the number of situations where conflicts canoccur by making the server responsible for most updates. Only in a fewcases will the client be able to modify objects and send the changes tothe server.

In the prototype the client modifications are limited to:

-   -   1. Create playlist    -   2. Edit playlist    -   3. Delete playlist    -   4. Edit customer profile (catchprase, icon)    -   5. Rate track

When designing the conflict resolution strategy we need to bear in mindthe following types of conflict:

-   -   Update conflicts occur when the update to a record conflicts        with another update.    -   Uniqueness conflicts occur when the update to record violates a        uniqueness constraint with a conflicting record.    -   Delete conflicts occur when a record is updated that has also        been deleted.        5.2.7. Use Cases

Whenever an object is updated or deleted the object_change_log orcustomer_object_change_log tables must be updated to reflect thischange. Because object data files on the client contain redundant datait's likely that a change will affect more than one object.

5.2.7.1. Server Changes

5.2.7.1.1. Artist Releases a New Album

The artist ‘Snow Patrol’ releases the album ‘Eyes Open’. Every clientthat contains the artist data file for ‘Snow Patrol’ needs to beupdated.

First we insert change records for ‘Snow Patrol’ and ‘Eyes Open’ intothe object_change_log table. See FIG. 67.

When a customer who has the ‘Snow Patrol’ artist file connects to theserver and a session is created the customer_data_object table is joinedwith the object_change_log table to find any objects that have beenmodified for this customer.

SELECT FROM customer_object, object_change_log

WHERE customer_object.object_guid=object_change_log.object_guid ANDcustomer_object.deleted_date IS NOT NULL ANDcustomer_object.object_modified_date<object_change_log.object_modified_date;

This query returns the ‘Snow Patrol’ object_change_log record. Thisrecord is inserted into the customer_object_change_log table. See FIG.68.

The customer_object.modified_date field is also updated to ‘18/07/200613:16:33’.

The ‘Snow Patrol’ data file is then sent to the client and thecustomer_object_change_log.acknowledgement_id field is set. When theclient acknowledges the file then thecustomer_object_change_log.acknowledgement_date field is set.

5.2.7.1.2. Artist is Removed

The artist ‘Cliff Richard’ is removed from MusicStation. Every clientthat has stored the ‘Cliff Richard’ data file or has a list thatcontains ‘Cliff Richard’ needs to be updated.

The object_change_log table is updated and a deleted record is insertedfor the following objects:

Artist

Artist.getAlbums( )

Artist.getLists( )

Artist.getAlbums( ).getLists( )

Artist.getPlaylists( )

5.2.7.1.3. Customer Shares a Playlist

The customer decides to create and share a new playlist ‘Sunday Stroll’.The client sends the new playlist to the server. Any changes are sent onthe next request to the server. As you are browsing tracks to add to theplaylist it is likely you are communicating with the server, and eachtime the changes will be sent.

When the Playlist object is created the object_change_log table isupdated and a record is inserted into customer_object_change_log forevery client that has the customer's data object file.

5.2.7.1.4. Customer Changes 1 Customer Shares a Playlist

The customer decides to create and share a new playlist ‘Sunday Stroll’.The client sends the new playlist to the server. Any changes are sent onthe next request to the server. As you are browsing tracks to add to theplaylist it is likely you are communicating with the server, and eachtime the changes will be sent.

When the Playlist object is created the object_change_log table isupdated and a record is inserted into customer_object_change_log forevery client that has the customer's data object file.

5.2.7.1.5. Custome Customer Shares a Playlist

The customer decides to create and share a new playlist ‘Sunday Stroll’.The client sends the new playlist to the server. Any changes are sent onthe next request to the server. As you are browsing tracks to add to theplaylist it is likely you are communicating with the server, and eachtime the changes will be sent.

When the Playlist object is created the object_change_log table isupdated and a record is inserted into customer_object_change_log forevery client that has the customer's data object file.

5.2.7.1.6. Customer Changes Language

The customer selects a different language. We'd like all files thatcontain language specific data to be updated.

Both the messages property file and editor captions need to be updatedto reflect this change. Only playlists display editor captions on theclient and so for any playlist on the client that has an editor captiona record is inserted into customer_object_change_log.

5.2.7.1.7. Customer Adds Track to Playlist Whilst Server Deletes Track

A user adds a track T to a playlist whilst offline. Meanwhile the serverdeletes track T.

When T is deleted a record is inserted into object_change_log. When theclient sends the updated playlist well compare the changes with therecords in object_change_log and delete the track from the playlist andsend it back. The customer won't be informed of this, the track willjust disappear.

5.2.7.1.8. Customer Adds Track to Playlist Whilst Server Renames Track

A user adds a track T to a playlist whilst offline. Meanwhile the serverrenames track T.

When T is renamed a record is inserted into object_change_log. When theclient sends the updated playlist well compare the changes with therecords in object_change_log and rename the track on the playlist andsend it back.

5.2.8. Device Memory Management

The device is able to communicate to the server how much memory there isleft for storage. The server will use this information to decide if anyfiles should be deleted from the client when delivering updates.

The object_last_used field in the customer_object table stores the datethe client last used a particular object. This field is populated fromlog data sent from the client to the server. The server uses this datato determine which files should be deleted. The server may also useother methods to predict which files should be deleted, for example astory no longer exists in any list.

The client also maintains a list of last used files and is able todelete these itself before it runs out of memory. This list is stored inRMS and references files by relative path and filename. The path andfilenames will be short because we intend to remove any meaning from thenames. This acts as a safety valve in case there's a problem with thedeletion logic on the server.

5.3. Incomplete Downloads

5.4. Client Logging

We need to log user actions, events and exceptions on the client andsend them to the server in order to:

-   -   Debug information during testing    -   Provide information for customer support    -   Collect usage data for reports and recommendations        5.4.1. Logger

The Logger object is used to control logging on the client. It is aDataObjectSet and can be synchronized with the server using MSTP.

Logger contains the following attributes:

-   -   Level: The level at which logs are stored, events at a lower        level are discarded        -   DEBUG: Events that are useful to debug the application        -   INFO: Informational messages that highlight the progress of            the application        -   WARN: Indicates that there's a potential problem        -   ERROR: An error occurred but the application managed to            continue        -   OFF: Nothing is logged    -   Priority: Controls the frequency that logs are sent to the        server        -   MIN: When the client next makes a request to the server or            when maxSize is reached.        -   NORMAL: Every 5 minutes (or as MIN)        -   MAX: Every 30 seconds (or as MIN)    -   This behaviour will be controlled by properties and can be tuned    -   MaxSize: The maximum number of records to store on the client    -   TimeOffset: The time difference between the server and client    -   LogRecords: The logs themselves

The Logger contains a LogRecord for each client log. The LogRecordconatins the following attributes:

-   -   Message: Readable description of what happened    -   Level: The level of this log    -   Date: The server time calculated using the client time and        timeOffset    -   SessionId: The server sessionId when this event occurred (if        any)    -   EventTypeGuid: The identifier in the event_type table for this        event (if any)    -   Parameters: The parameters that are pertintent for this event        See FIG. 69.        5.4.2. Client Debugging

Whilst the client is in testing we need to allow the testers to easilyview the client logs so that they can understand what was going on whenthe error occurred and can include these in Mantis bug reports.

The client will log the following:

-   -   Tasks including all parameters required to run the task    -   Commands including all parameters required to run the command    -   Exceptions including all relevant information

Each LogRecord will be logged as an incident and can be viewed by thetester using the Incident Monitor's web interface. Because each recordis logged using the server time the incidents can be ordered by date togive a list of client and server actions in the sequence that theyoccurred.

5.4.3. Customer Support

When the customer contacts customer support we need to push the Loggerobject from the client to the server so that customer support can seethe last LogRecords generated by the client. The client needs toinitiate the push, which it may not do for a while if the log priorityis set to MIN. Therefore we need a method for commanding the client topost the Logger object.

We need to log enough information to recreate the user's situation. Thisinformation will be stored in the LogRecord.parameters Hashtable. If theeventTypeGuid attribute is set a record will be inserted into thecustomer_event table and the parameters inserted intocustomer_event_val. We will use a queue to insert into customer_eventand customer_event_val so that event logging doesn't delay the responseto the client. The exception is when the customer_logger.priority is setto MAX. In this case we want to see events as they happen and theserecords will be inserted directly into the database.

5.4.4. Usage Data

Client usage data is populated using triggers on the event table. So forexample when we receive an event for the customer plays a track thecustomer_track.play_count is incremented.

5.4.5. Database Requirements

Customer support needs to be able to control the logging generated bythe client and the frequency that it's sent to the server. This iscontrolled using the customer_logger table. See FIG. 70.

Whenever this table is changed a record is inserted intocustomer_object_log so that the updated Logger object can be pushed tothe client.

6. DRM

6.1. Introduction

MusicStation is a mobile phone based software application which allowsusers to discover, manage and listen to music on their phone on the moveusing the mobile network. Omnifone takes MusicStation to marketprimarily in partnership with Mobile Network Operators (MNOs) whilstworking closely with the music industry to ensure the widest and bestrange of music is available to MusicStation users. Such vast librariesof digital music media are extremely valuable and need to be protectedfrom theft and abuse whilst enabling valid paying users seamless access.Digital Rights Management (DRM) provides a method to control andfacilitate the legitimate distribution and use of digital media.

The primary handset technology platform for MusicStation is Java 2Platform Micro Edition (J2ME). This platform was chosen because itprovides the widest mobile phone handset reach. This document describesthe methods used by Omnifone's J2ME MusicStation handset application andassociated network services to distribute protected content and securelyissue the rights to use that content.

MusicStation's DRM is an implementation of the Open Mobile Alliance(OMA) DRM v2 specification. This specification has been widely adoptedby both the mobile & music industries as their preferred method ofprotecting content for mobile devices. Whilst OMA DRM v1 has been widelyadopted by handset vendors, at the time of writing, there are very fewhandsets which support OMA DRM v2. For this reason the OMA DRM v2implementation discussed in this document is that which Omnifone hasbuilt into the MusicStation handset application and the associatedMusicStation network services.

6.1.1. DRM Overview

Before content is delivered, it is packaged to protect it fromunauthorised access. A Content Server (CS) delivers DRM Content, and aRights Issuer (RI) generates and delivers associated Rights Objects. TheContent Server and Rights Issuer embody roles in the system. Dependingon deployment they may be provided by the same or different actors, andimplemented by the same or different network nodes. For example,pre-packaged protected content can be distributed across multipleContent Servers for efficient delivery of content. See FIG. 71 DRMOverview.

A Rights Object governs how DRM Content may be used. It is a documentspecifying permissions and constraints associated with a piece of DRMContent. DRM Content cannot be used without an associated Rights Object,and may only be used according to the permissions and constraintsspecified in a Rights Object.

Like all OMA v2 systems, MusicStation DRM makes a logical separation ofDRM Content from Rights Objects, known as “separate delivery”. DRMContent and Rights Objects may be requested separately or together, andthey may be delivered separately or at the same time. For example, auser can select a piece of content, pay for it, and receive DRM Contentand a Rights Object in the same transaction. Later, if the Rights Objectexpires, the user can go back and acquire a new Rights Object, withouthaving to download the DRM Content again.

Rights Objects associated with DRM Content have to be enforced at thepoint of consumption. The DRM Agent, inside of the MusicStation handsetapplication, embodies a trusted component of the application,responsible for enforcing permissions and constraints for DRM Content onthe device, controlling access to DRM Content on the device, and so on.

A Rights Object is cryptographically bound to a specific DRM Agent, soonly that DRM Agent can access it. DRM Content can only be accessed witha valid Rights Object, and so can be freely distributed. This enables,for example, “super-distribution”, as users can freely pass DRM Contentbetween them. To access DRM Content on the new device, a new RightsObject has to be requested and delivered to a DRM Agent on that device.

6.1.1.1. Protection of Content Objects

The DRM Content Format (DCF) is a secure content package for DRMContent, with its own MIME content type. In addition to the encryptedcontent it contains additional information, such as content description(original content type, vendor, version, etc.), Rights Issuer URI (alocation where a Rights Object may be obtained), and so on. Thisadditional information is not encrypted and may be presented to the userbefore a Rights Object is retrieved. Only the media content (e.g. musicfile) is encrypted in the DCF file.

The Content Encryption Key (CEK) needed to unlock DRM Content inside aDCF is contained within the associated Rights Object. Thus it is notpossible to access DRM Content without a Rights Object. DRM Content canonly be used as specified in a Rights Object. MusicStation DRM includesa mechanism allowing a DRM Agent to verify the integrity of a DCF,protecting against modification of the content by some unauthorisedentity.

6.1.1.2. Protection of Rights Objects

A Rights Object is protected using a Rights Encryption Key (REK). TheREK is used to encrypt sensitive parts of the Rights Object, such as theContent Encryption Key. During delivery, the REK is cryptographicallybound to the target DRM Agent. In this way only the target DRM Agent canaccess the Rights Object, and thus the CEK. Rights Objects are thereforeinherently safe.

6.2. MusicStation on the Handset

Irrespective of which provisioning method was used, the MusicStationapplication ends up being resident on the user's mobile phone handset.Each MusicStation handset application installation is a tailored buildof software potentially unique to each different phone model and handsetfirmware version. The software builds are created and managed byOmnifone's patented Device Adaptive Architecture (DAA) and delivered tothe correct handset using Omnifone's sophisticated applicationprovisioning software described below.

6.2.1. MusicStation Provisioning

Working with the MNO there are two ways that the MusicStation mobilehandset application is “provisioned” onto the phone, both of which aredealt with in detail in this chapter. The preferred method fordistributing the MusicStation application to a handset is to preload(preinstall) the application on the device before it reaches theend-user. Experience of delivering this type of application has shownthat discovery by end-users can be as high as 93% when preloaded in themost desirable manner with a hard-key (music button) on the phone whichstarts the service Similar experience in OTA provisioning of this typeof application by MNOs has shown success rates (i.e. ratio ofsuccessfully connected users to requestors) to be an order of magnitudelower than when the application is preloaded.

6.2.1.1. Application Preload (Preinstall)

Typically this type of device customisation is done by the handsetvendor at the request of the MNO and performed before the handset leavesthe vendor's premises. It can also be performed by handset distributors,such as Mobiltron, who have customisation capabilities in thesupply-chain or perform the same in cells at the warehousing facilitiesof the MNO.

Wherever this preload is performed it is supported by Omnifone's PreloadProvisioning tool, the Preloader. The Preloader is a network-connecteddesktop application used by staff at the preloading facility. Access tothe Preloader is controlled by a Software License, a userid & passwordand filtered by a list of authorised IP addresses. Access to thePreloader can be revoked at any time either by user, Software License orby organisation.

The Preloader provides an authorised party with access to the latest andmost appropriate MusicStation client software builds. Omnifone cancontrol which software builds any Preloader has access to by vendor andmodel. The Preloader enables the easy location, download and localstorage of the correct MusicStation client software build forintegration into the handset customisation tools and processes of theinstalling party.

In-built into the Preloader is a notification system which can alertinstallers to the fact that new software builds are available fordownload.

6.2.1.2. Over-The-Air Delivery (OTA)

Due to an open OTA API, Omnifone supports a number of touch points andmechanisms by which a user might acquire MusicStation OTA. Theseinclude, but are not limited to:

-   -   (MNO) WAP portal request.    -   SMS text in request.    -   Web based request.    -   IVR acquisition.    -   Web services link    -   Deep MNO network integration such as when SIM is first seen on        network.

Irrespective of request mechanism, the MusicStation application isdelivered by offering the end-user a WAP download page either directlyinside a WAP portal they are already surfing or via WAP push if theapplication was requested via another method.

6.2.1.3. Application Reinstall

The MusicStation application contains the ability to force a fullreinstall of the application if so instructed to do so by the Server. Inthis instance the MusicStation application is re-downloaded using OTAWAP download. If the application reinstall is mandated by the Server theold version of the application will not run.

6.2.2. MusicStation Handset Application Embedded Metadata

Inside each MusicStation handset application is a set of information andmetadata automatically inserted and used for a variety of purposes asdescribed here.

6.2.2.1. Handset Vendor, Model, Version and Firmware Revision

Every MusicStation handset application is built for a specific handsetvendor, model, version and firmware revision combination. Metadataidentifying this combination is embedded in every MusicStationapplication build. As such the Server knows exactly what type of handsetconfiguration each MusicStation application is running on. This is thecase even if the Server has never communicated with this particularMusicStation application before.

6.2.2.2. Software License

Every MusicStation handset application is built specifically for aparticular MusicStation Service. To affect this every MusicStationhandset application has a “Software License” embedded inside it. TheSoftware License is a 512 bit random number which, when presented to theServer, is used to relate this application instance to a particularMusicStation Service. Each Service is either locked or unlocked, onlyunlocked Services are usable by end-users.

6.2.2.3. MusicStation Root CA Certificate

Each MusicStation application has the MusicStation Root CA Certificateembedded within the application. This certificate, described in muchmore detail in later sections of this document, is used to sign andvalidate messages sent between the MusicStation handset application andthe Server.

6.2.3. Application Permissions & Signing

J2ME implements a security model which means that certain functions thatyou would normally expect a software application to have access to (e.g.accessing memory/file systems, or accessing the network) are actuallyrestricted. Clearly an application like MusicStation makes extensive useof such features and as such needs access to these common but securityprotected features of a handset.

In order to provide the MusicStation application with access to theserestricted functions, the application is “signed”. The signature andresulting PKI certificate of the signer is stored in the JAD file of theapplication. When the MusicStation application is run, this signature isexamined and the certificate is validated to one of the protected domainroot certificates already on the handset for these purposes. If theapplication is correctly signed the restricted features becomeavailable.

The root certificates already on the phone are generally either rootcertificates from the phone manufacturer, mobile network or certificateauthority such as Verisign.

6.2.4. DRM Pertaining to the MusicStation Application Itself

There are a number of ways in which hackers attempt to break DRMsystems. One of these ways is to reverse engineer the software codewhich implements the DRM. It is for this reason that the MusicStationhandset application is always installed using the DRM resident on thephone to protect the software from being removed.

Although advanced DRMs such as OMA v2 are not present on many handsets,OMA v1, which supports the required “forward-lock” content controlmechanism, is present on the majority of handsets. Forward-lock does asit suggests, it disables the forwarding or transferring of the contentitem, in this context the MusicStation handset application, from thephone. Whether MusicStation is preloaded or OTA installed, it isinstalled as an OMA v1 forward-lock protected file.

To further secure OTA deliveries of the MusicStation application, onlyOTA requests for application downloads confirmed to issue from the MNOnetwork gateways are supported. This ensures that the application codeis only ever downloaded over a particular MNO's mobile Internet to aphone rather than being issued from the general Internet. This isimplemented by confirming that the source or routing IP addresses foundin the network communications headers and metadata are those gatewaysstored in the Service database and known to be those of the MNO.

6.2.5. Preloading Music

Music content can be preloaded on to a phone at the same time as theapplication is installed. This content is either free for promotion andmight not be DRM'd, or it is for purchase and subject to the same DRM aswould have been applied if the music were downloaded OTA viaMusicStation. Preloaded content enables MusicStation to come out of thebox playing.

6.3. Using MusicStation for the First Time

Before a MusicStation application can be used by its owner it must firstconnect to the MusicStation Server so that it can be registered with theappropriate MusicStation Service and issued with a Client Certificate(and an associated Client Private Key) so that it may access the DRMprotected music content which it downloads. In order to be issued withRights Objects (containing the access rules and the keys to access theDRM protected content) the MusicStation application must also registerwith the Rights Issuer, this two-step registration process is describedin this chapter.

6.3.1. MusicStation Service Registration

The first time MusicStation starts it knows that it needs to connect tothe MusicStation

Server in order to register with a Service and be equipped with a ClientCertificate and the Client Private Key so that it may access DRMprotected content. In order for the registration to occur the Serverneeds to be able to uniquely identify the device. The “2-pass”MusicStation Service Registration Protocol is the protocol by which thisis achieved. This protocol includes identification of the device and thesubscriber followed by the secure transfer of the Client Certificate andthe associated Client Private Key from the MusicStation Server (theCertificate Authority) back to the Device. As it is imperative that onlythis MusicStation Device can access the Client Private Key, theregistration protocol uses HTTPS secure communications.

6.3.1.1. Service Registration Request

The MusicStation application attempts to access the handset's IMEI,Bluetooth Address, IMSI and the subscriber's MSISDN so that it mightprovide information to the Server to uniquely identify the Device andthe user. The request parameters sent to the Server are described in thetable in FIG. 72: Service Registration Request Parameters. ^(†). One ofIMEI, Bluetooth Address or IMSI must be supplied to identify the deviceor SIM card at the server.

6.3.1.2. MNO Added Metadata

As communications from the MusicStation handset application to theMusicStation Server are routed through the networking equipment of theMNO the following subscriber and potentially also handset identifiersare added to the HTTP request headers. This information is extractedfrom these headers and used by the MusicStation Server for addedidentification purposes. See FIG. 73. ^(†)One of MSISDN or Party ID mustbe supplied to identify the subscriber at the server.

6.3.1.3. Service Registration Process

When the MusicStation Server receives a Service Registration Requestmessage these steps are followed.

6.3.1.3.1. Registration from MNO Home Network?

When the Server receives a registration request it checks that themobile data network that the MusicStation handset application iscurrently being used on is the MNO's home network. This is done using aset of database stored records of the IP addresses of the MNO's homenetwork gateways and Internet traffic routing equipment.

The normal setting is to only allow Device registrations on the MNO'shome network or on other specific networks such as that of a third-partyMNO with whom there is a roaming agreement.

6.3.1.3.2. Customer Credentials Verification

Upon receipt of a request to register a new MusicStation handsetapplication with a MusicStation Service the server will perform thefollowing tests:

-   -   Confirm that the Software License is for a valid and active        MusicStation Service.    -   Confirm that the subscriber has been identified, e.g. by MSISDN        or Party ID.    -   Confirm that the MSISDN or Party ID is a customer of this MNO        (if the API exists at the MNO).    -   Optionally confirm that the device has been identified, e.g. by        IMEI or Bluetooth ID.

Once these credentials have been confirmed, the server moves on to thePKI stage below.

6.3.1.3.3. MusicStation & Public Key Infrastructure (PKI)

After a MusicStation Service Registration is successfully completed theDevice will need to register with the Rights Issuer so that it mayrequest Rights Objects and in turn access DRM content. The RightsIssuer, however, only registers Devices which it can positivelyidentify. This identification is facilitated by the MusicStation Serveracting as a PKI Certificate Authority (CA) and generating a public keycertificate, the Client Certificate, for each registered MusicStationhandset application and thus attesting to the authenticity and identityof each Device. The MusicStation Rights Issuer trusts the CA, it has acopy of the MusicStation Root CA Certificate so that it can confirm thatthe Client Certificate presented to it by a MusicStation handsetapplication was actually issued by the CA.

Public Key Infrastructure (PKI) is the arrangement used which providesfor trusted third-party vetting of, and vouching for, user identities,or in this context MusicStation handset application identities. Itallows the binding of public keys to users. This is usually carried outby software at a central location, in this case the MusicStation Server,together with other coordinated software at distributed locations, i.e.the MusicStation handset applications.

PKI arrangements enable users (MusicStation applications, MusicStationServers, MusicStation Rights Issuers, etc) to be authenticated, and touse the information in PKI certificates (i.e. each other's public keys)to encrypt and decrypt messages traveling between parties in the system.In general, a PKI consists of client software (MusicStation handsetapplication), server software (MusicStation Server) such as aCertificate Authority and operational procedures. A user may digitallysign messages using his private key, and another user can check thatsignature (using the public key contained in that user's certificateissued by a CA within the PKI). This enables two (or more) communicatingparties to establish confidentiality, message integrity and userauthentication without having to exchange any secret information inadvance.

The authenticity of the CA's signature, and whether the CA can betrusted, can be determined by examining its certificate. This chain musthowever end somewhere, and it does so at the MusicStation CA RootCertificate, so called as it is at the root of a tree. Root certificatesare implicitly trusted (they are sometimes called the Trust Anchor) andare included with many software applications such as web browsers, or inthis case the MusicStation Rights Issuer and the MusicStation handsetapplication.

6.3.1.3.4. Client Certificate & Client Private Key Generation

The first step in issuing a new Client Certificate is to generate a newpublic and private key pair for the MusicStation handset applicationwhich is registering. This implementation of PKI uses the RSA 1024 bitpublic key algorithm.

Once the key pair has been generated the public key is used by theMusicStation CA to build, then issue the Client Certificate. The ClientCertificate states that the CA attests that the public key contained inthe Client Certificate belongs to the MusicStation handset applicationnoted in the certificate. A CA's obligation is to verify an applicant'scredentials, so that users (relying parties, such as the MusicStationRights Issuer) can trust the information in the CA's certificates. Theidea is that if the user trusts the CA and can verify the CA'ssignature, then they can also verify that a certain public key doesindeed belong to whomever is identified in the Client Certificate.

The Client Private Key is not stored on the MusicStation Server, onlythe Client Public Key so that the server can create messages that onlythis device can open.

The X.509 standard is used for all MusicStation certificates. X.509 isan ITU-T standard for public key infrastructure (PKI). X.509 specifies,amongst other things, standard formats for public key certificates and acertification path validation algorithm.

6.3.1.3.5. Client GUID

The Client GUID is a unique number (Globally Unique ID) which isgenerated every time a new MusicStation handset application isregistered with the Server. The Client GUID is returned to theMusicStation handset application whereupon it is stored and returned onall subsequent communications and requests to the MusicStation Server orthe MusicStation RI.

6.3.1.4. Service Registration Response

The Service Registration Response message is sent from the CA to theDevice in response to a MusicStation Service Registration Requestmessage. It carries the protected Client Certificate and Client PrivateKey over HTTPS. See FIG. 74: Service Registration Response Parameters.^(†)Only mandatory if Status=“Success”.

6.3.1.5. Post Service Registration Process

After the results are returned for a successful Service Registration theMusicStation handset application performs the following tasks.

6.3.1.6. Client Certificate Storage

The Client Certificate for the device is stored in the application'srecord management system (RMS) memory store. RMS in J2ME provides amechanism through which applications can persistently store data andretrieve it later. In a record-oriented approach, J2ME RMS comprisesmultiple record stores.

6.3.1.6.1. Client GUID Storage

The Client GUID is encrypted, scrambled and stored in the application'sRMS. This is used in all future requests to the MusicStation Server andMusicStation RI.

6.3.1.6.2. Client Private Key Storage

The MusicStation handset application uses the J2ME private RMS feature.This means that only the MusicStation application which created the RMSrecord store has access to it.

MusicStation, however, goes further to ensure the security of the ClientPrivate Key. The MusicStation handset application only stores the ClientPrivate Key after encrypting it as an extra security measure in theunlikely event that RMS becomes compromised. More over the applicationfurther obfuscates the Client Private Key using certain techniques priorto and during its storage in RMS.

6.3.2. Rights Issuer Registration

Immediately after the Device acquires its Client Certificate it willattempt to register with the Rights Issuer (RI). A device must beregistered with a MusicStation Service before it can register and obtainRights Objects from the RI. Successful completion of the RI registrationprocess allows the Device to acquire a Domain Key (DK). The DK is a128-bit AES symmetric key used to protect the Rights Encryption Keys(REKs) of the Rights Objects delivered to the Device.

The RI Registration Protocol is a complete security information exchangeand handshake between the Device and the RI. The RI RegistrationResponse message is sent from the Rights Issuer to the Device inresponse to a RI Registration Request message. This message completesthe Registration protocol, and if successful, enables the Device toestablish a RI Context for this RI. The RI Context consists ofinformation that was negotiated with the Rights Issuer, during the2-pass RI Registration Protocol. This RI Context is necessary for aDevice to successfully acquire Rights Objects.

6.3.2.1. DRM Domains

A Domain is a set of one to many Devices that possess a common DomainKey distributed by a Rights Issuer. Devices in the same Domain can allaccess the same Domain Rights Objects (RO) and potentially then themusic protected by those ROs.

In MusicStation the DRM Domains are network-centric. The RI defines theDomains, manages the Domain Keys, and controls which and how manyDevices are included and excluded from the Domain. Typically eachMusicStation handset application has its own DK and only oneMusicStation Device is in each Domain.

6.3.2.2. RI Registration Request

The RI Registration Request message is sent from the Device to theRights Issuer to initiate the 2-pass RI Registration Protocol. See FIG.75 MusiStation RI Registration Request Parameters.

6.3.2.3. RI Registration Response

The RI Registration Response message is sent from the Rights Issuer tothe Device in response to a RI Registration Request message. When theregistration is successful it results in a Domain Key being delivered tothe MusicStation handset application. This DK is encrypted using theClient Public Key found in the Client Certificate sent to the RI in therequest. This way the DK can be securely transferred to the Device asonly the Device has access to its Client Private Key which is needed todecrypt and access the DK. See FIG. 76: RI Registration ResponseParameters. ^(†)Only mandatory if Status=“Success”.

6.3.2.4. Post RI Registration Process

After a successful RI Registration Response is received, MusicStationencrypts and obfuscates the returned Domain Key and stores it in theapplication's private RMS. The DK is subsequently used by MusicStationto access DK encrypted Rights Encryption Keys (REKs) in order to accesssensitive parts of Rights Objects (ROs).

6.4. Listening to Music

In order to listen to music a MusicStation Device needs both the musicfile, stored as DRM protected content in the DRM Content Format (DCF),and the RO containing the Content Encryption Key (CEK) to unlock theDRM.

It is possible that at any one time neither the DCF nor thecorresponding RO is on the Device. ROs contain URLs for the DCF and DCFscontain the URLs for the RO such that if you have one you can acquirethe other. If neither are on the Device then the track listing shown inthe MusicStation application also contains the URLs for both the RO andthe DCF, so oftentimes both files are requested simultaneously after atrack has been located in a search or whilst browsing.

6.4.1. Rights Object Acquisition

The 2-pass RO Acquisition Protocol is the protocol by which the Deviceacquires Rights Objects. This protocol includes mutual authentication ofthe Device & RI, integrity-protected request and delivery of ROs, andthe secure transfer of cryptographic keying material necessary toprocess the RO.

6.4.1.1. RO Acquisition Request

The RO Acquisition Request message is sent from the Device to the RI torequest Rights Objects. This message is the first message of the 2-passRO Acquisition Protocol. See FIG. 77: MusicStation RO AcquisitionRequest Parameters.

6.4.1.2. RO Acquisition Response

The RO Acquisition Response message is sent from the RI to the Device inresponse to a RO Acquisition Request message. It carries the ROscontaining the protected Content Encryption Key (CEK) for the music DCFin question. See FIG. 78 MusicStation RO Acquisition ResponseParameters. ^(†)Only mandatory if Status=“Success”.

6.4.1.3. Client Certificate Revocation

Once per Device session the RI checks with the CA that the Device'sClient Certificate is still valid. The CA maintains a certificaterevocation list (CRL), a list of Client Certificates that have beenrevoked and should not be relied upon. Whenever a certificate is used itmust be checked against this list to check the revocation status. Thecertificate will be revoked if the CA has improperly issued acertificate, the private key has been compromised, the user has violatedthe CA's usage policy or the MusicStation administrator has deniedaccess to this Device for any reason.

6.4.2. Content Download

This section descibes how music content is prepared, protected anddownloaded to MusicStation Devices from the MusicStation Content Server.

6.4.2.1. Content Preparation

Before music content is made available for download from theMusicStation Content Server (CS) it is protected from unauthorisedaccess by encryption. Encrypting a music file creates a new file knownas a DRM Content Format (DCF).

In MusicStation music content encryption is performed using a 128-bitRC4 symmetric Content Encryption Key (CEK). Every DCF has a different128-bit RC4 CEK. Thus if there are 1,000,000 tracks in the music libraryand each track is available in 10 distinct file formats (to cater fordifferent phone flavours and music capabilities/codecs) there are10,000,000 distinct CEKs, one per physical file. This means that even ifthe CEK to one DCF is compromised, no other DCF is compromised as aresult.

6.4.2.2. Content Acquisition Request

Since every DCF is inherently secure, DCFs can be transported usinginsecure transport protocols. For this reason MusicStation Devicesrequest music content using HTTP. See FIG. 79 Content AcquisitionRequest Parameters.

6.4.2.3. Content Acquisition Response

The response from the MusicStation Content Server is typically thebinary stream of the DCF file requested over HTTP. This is predominantlythe entire file but sometimes the file transfer can be interrupted bybroken mobile network coverage. In these situations the MusicStationhandset application makes a subsequent Content Acquisition Request butthis time, using the Range parameter, it only requests the part of theDCF that it does not already have.

As the DCF byte stream arrives at the Device the MusicStationapplication progressively writes the file to the handset's file system.Both internal and external (removal media) memory is utilised. WhenMusicStation's allocation of combined internal & external memory isfull, MusicStation removes the track which has not been played for thelongest period of time. This is repeated until there is enough spaceavailable for the newly requested track.

All music content is stored in the original DCF protected format inwhich it was downloaded. In order to access the music inside any DCF,the corresponding RO is required so that the CEK may be accessed.

6.4.3. Playing Music Content

In order to play music through the MusicStation application the musictrack DCF and the corresponding RO are required to be on the phone.First the RO is examined to see if the user has the right to play themusic. If so the CEK is extracted from the RO and used to decrypt theDCF to access the music track which is then played via the phone's mediaplayer.

6.4.3.1. Evaluating the Rights Expression Language (REL)

Once a request is made to play a track, for which the relevant RO & DCFexist on the phone, the Rights Expression Language contained in the ROis parsed by the MusicStation DRM Agent. The REL defines the ways inwhich the content in the DCF associated with this RO can be consumed andused by the user. The rights expressed by the REL can be very rich,examples include:

-   -   Content is free for unlimited playback.    -   Content can be played once then must be bought.    -   Content can be played free for one week then must be bought.    -   Content can be played free for one month but not more than 5        times.    -   Content can be played an unlimited number of times if purchased.    -   Content can be played an unlimited number of times if user is        currently inside a valid AYCE subscription period.        6.4.3.2. Decrypting the Content

If the DRM Agent determines from the REL that the user is able to playthe music then the 128-bit AES REK is used to gain access to theencrypted CEK for the associated DCF. The 128-bit RC4 CEK is then usedto decrypt the DCF to access the original music track. This decryptedtrack is either stored in non-permanent handset memory for the durationof the track playback or it is progressively delivered in as a decryptedstream to the handset media player depending on the behaviour of theparticular phone. Decrypted music tracks are never stored permanently onthe handset.

6.5. All-You-Can-Eat Services

Due to MusicStation's sophisticated DRM implementation it is possible tosupport advanced content access models such as All-You-Can-Eat (AYCE).This allows users who are within a valid subscription period to haveunlimited access to download any track and play each track as often asthey like.

6.5.1. Subscription Periods

MusicStation supports a wide range of subscription periods such asdaily, weekly, monthly or any other period required. A subscriptionperiod starts when the MusicStation Server communicates with the MNObilling system and successfully charges the user's telephone bill withthe appropriate charge for the subscription period.

The MusicStation Server maintains the state of the user's subscriptionperiod by recording the date/time of the successful charge made to theuser's bill (prepay or postpay) and the length of the subscriptionperiod for which the user was charged. This information is shared withthe DRM Agent on the MusicStation handset application and thus theDevice knows if the user has a valid subscription or not.

6.5.2. Subscription Expiry

The preferred method for implementing AYCE subscriptions is the rollingsubscription method. In this model the MusicStation Server automaticallypurchases a new subscription when the current subscription period runsout. The user does have the option to cancel a subscription and thiscauses the automatic re-subscription to be suspended. If the user triesto access content (whether on the Device or not) after the end of thelast valid subscription period the user is asked if they want to restarttheir subscription. If so the rolling subscription starts again.

Where the subscription model is not a rolling subscription, the userneeds to confirm that they wish to subscribe for another AYCE periodeach time the current period lapses.

6.5.3. Parent Rights Object

A Rights Object may inherit permissions from another Rights Object. Thismechanism is used, for example, to specify rights for content acquiredas part of an AYCE subscription. The RO that inherits permissions isreferred to as a Child Rights Object (C-RO). The Rights Object thatcontains the permissions that are inherited is referred to as a ParentRights Object (P-RO).

The Client Devices verify that the same Rights Issuer issued the C-ROand its related P-RO and they both belong to the same Domain before theassociated content is made available to the user. The P-RO does notreference any DRM Content directly.

6.5.4. DRM Time

The DRM Agent on the phone ideally has permanent access to an accuratedate/time unchangeable by the user (a DRM time). This is not the casewith mobile phones so MusicStation has to use various methods to ensurethat a reliable DRM time is available to the DRM Agent so that fairaccess can be given to users performing legitimate changes to theirphone date/time whilst resisting those users who may try to fool thesystem and gain illegitimate access within a subscription service.

Whilst phones may legitimately have their date/time changed at any point(e.g. first time it has been set, changing time zone or daylight saving)the MusicStation Server always maintains a reliable date/time. So whilstthere is a network connection the DRM Agent can always access a reliabledate/time datum.

Because the MusicStation Server date/time is potentially different fromthe Device's local date/time the DRM Agent uses timers relative to thelocal date/time rather than absolute date/times. However it alsomonitors the local date/time relative to where it knows the localdate/time should be based on the timers it keeps. This allowssubscriptions to expire without network connections and alsoidentification of local phone date/time changes. Whenever a networkconnection occurs all the timers and actual date/time knowledge isreset.

Issues potentially occur when users attempt to fool the system bysetting their date/time to some time in the past. These issues aresuccessfully countered using the following logic:

-   -   When the MusicStation handset application starts, it compares        the local date/time with the last application close date/time.        If the application open date/time is before the last application        close date/time then the difference between these two date/times        is subtracted from the relative timer.    -   The net result is that the longest a determined user can use        MusicStation for whilst they have no network connection is an        aggregate application usage time equaling the length of time of        the paid-for subscription period (e.g. one week). In order to do        this they need to note down the time every time they close        MusicStation and reset their phone date/time to that time just        before and every time they start MusicStation. Clearly the        limited reward does not appear to be worth the effort.    -   The date/time is checked once a minute whilst the application is        running to protect against a user changing the date/time whilst        the application is open. If the current date/time is before the        last date/time then the difference between these two date/times        is subtracted from the relative timer.

If a user legitimately changes their local date/time to a date/time inthe future and the Device can connect to the Server expiry times arere-synced with the Server. If a connection is not available:

-   -   If the future time is still within the valid subscription period        then the tracks will play.    -   If the future time is greater than the license expiry time then,        outside of a system configurable threshold, tracks will not play        until the Device connects to the Server. It is not possible to        distinguish between the user putting their clock forward (whilst        MusicStation is not running) and the user not using MusicStation        for a long period of time. A reconnection to the server via the        data network is required to reactivate the user or renew the        subscription.        6.5.5. AYCE Accounting

Accounting for AYCE systems requires an absolute count of every play ofevery track by every end-user. Track consumption information istherefore required to be transferred back to the Server where allqualifying plays by all MusicStation Devices in a particular Service areaggregated together. These aggregated play counts are used to determinewhat the royalty payments are to each rights owner whose music has beenplayed in the accounting period. Tracks which are played for less than apreview threshold period, such as 30 seconds, are considered to be freepreviews and are not included in the royalty payments calculations.

So that MusicStation does not cause unnecessary network traffic, playcounts are buffered on the Device until a natural network connection isrequired by the application. This buffering extends also to OG (flightsand tunnels etc) where play counts can be buffered for extended periodsof time and sent to the server when a connection is finally made.

6.5.6. Blended Models

MusicStation provides for a blended commercial model where users who arein AYCE may still make outright purchases of tracks. If the subscriptionperiod ends without renewal, those tracks that the user has purchasedmay still be accessed.

6.6. Appendix A: Key Management

This is a description of the cryptographic way in which the RightsIssuer issues a Domain Key (DK) to a Device using the public key knownonly to the DRM Agent in the MusicStation handset application on theDevice. Also described is the way that the RI protects the CEK in the ROby using a REK which it delivers to the Device having first beenencrypted using the KD previously delivered to the Device.

6.6.1. Distributing K_(D) under a Device Public Key

This section applies when provisioning a Device with a Domain Key,K_(D).

K_(D) is the symmetric key-wrapping key used when protecting K_(REK)(“Rights Object Encryption Key”) issued to a Domain D. K_(D) is a128-bit long AES key generated randomly by the sender and shall beunique for each Domain D. K_(REK) is the wrapping key for thecontent-encryption key K_(CEK) in Rights Objects.

The asymmetric encryption scheme RSA shall be used to securely transmitK_(D) to a recipient Device using the Device's RSA Client Public Key.

C=RSA.ENCRYPT(ClientPubKey, K_(D))

After receiving C, the Device decrypts C using its Client Private Key:

K_(D)=RSA. DECRYPT(ClientPrivKey, C)

6.6.2. Distributing K_(REK) Under a Domain Key K_(D)

This section applies when protecting a Rights Object for a Domain.

The key-wrapping scheme AES-WRAP shall be used. The RI encrypts K_(REK)using K_(D).

C=AES_WRAP(K_(D), K_(REK))

After receiving C, the Device decrypts C using K_(D):

K_(REK)=AES-UNWRAP(K_(D), C)

Appendix 1: Screen Flows

7. Introduction

This appendix provides a description of the screens and user interfaceof the MusicStation client. It includes a full feature list and, foreach feature, a description of the user experience and appropriatescreenshots.

The features are broken down into the main functional groups of theapplication, which generally follow the application's menu structure.

7. Screen Layout and User Interaction

7.1. Registration

See FIG. 80. When MusicStation is started for the first time the userwill see a message while the client is registered with the server andthe user is provided with a unique identifier or GUID.

7.2. Joining MusicStation

See FIG. 81. When a user first attempts to use any of the chargeablefeatures of MusicStation for the first time they are asked to Join witha optional free trial period. They are then asked to confirm and givenan option to view the Terms and Conditions via a wap link. Thereaftersubscription is confirmed and they are required to select continue onconfirmation. A user that has successfully subscribed is known as aMusicStation member.

7.3. Tabs and Menus

See FIG. 82. The user interface is separated into four tabs. Each tab isfocused on a particular core function of MusicStation.

-   -   Home—provides the user access to all the content available in        MusicStation including Charts and to all the core functions such        as Search, Options, etc. It also highlights content the user has        downloaded (i.e both “store” and “library”).    -   Buzz—provides access to the community features and music news.    -   Lineup—displays the current queue of tracks for download and        listening.    -   Playing—displays details of the track that is currently being        played.

The Home tab and Buzz tab consist of multiple screens arranged in ahierarchical menu structure.

7.4. Menu and Tab Navigation

The user uses the joystick to navigate through the tabs and menus of theapplication. See FIG. 83.

7.5. The More Menu

7.5.1. Accessing Functions

See FIG. 84. Every screen includes a More menu on the handset's righthand soft key which provides access to functions relevant to both thecurrently selected item and to the screen as a whole. Options that arenot currently available are greyed out on this menu and cannot beselected.

The More menu can be closed again by selecting Cancel with the righthand soft key.

7.5.2. Context Sensitive Options

The options available in the More menu are context-sensitive to thecurrently highlighted item. This table lists the common More menuoptions and a description of the action the selected More menu optionperforms. See FIGS. 85 and 86.

Please see Appendix 2: Context Sensitive Menus for a detailed listing ofthe More menu options available for each MusicStation option.

7.6. Back

See FIG. 87. A screen navigation history is maintained. At any time theuser may press the left hand soft key to go back to the previous screenin any given tab. On handsets such as those from Sony Ericsson, if thehandset has a hard Back key then that can also be used to go backthrough the screen history.

7.7. Music Playback

See FIG. 88. Various keys are predefined and associated with musicplayback functions so that the user can control playback from any screenin the application without having to return to the Playing tab. Forexample, the [5] key pauses and resumes the music playback wherever theuser is within the user interface. See FIG. 89.

7.8. Help

See FIGS. 90 and 91. The user may view the keypad help by pressing the[1] key. This screen displays the actions performed by pressing anynumbered key on the handset regardless of the user's location inMusicStation.

7.9. Keypad Lock

See FIGS. 92 and 93. The keypad is locked by the user pressing andholding the [*] key. To unlock the keypad the user presses and holds the[*] again. Music will continue playing while the joystick is locked butno menu options or other music playback control keys will be accessibleto prevent accidental use.

7.10. Minimising

See FIGS. 94 and 95. The application may also be minimised by pressingand holding the [#] key. To stop the music the user must re-openMusicStation.

7.11. Exiting

See FIG. 96. When the user selects Close from the More menu then ifmusic is playing they will be asked whether they want music to continueplaying.

-   -   Exit and keep music playing—MusicStation will be minimised and        moved into the background on the handset. The user can then        continue to use the handset's functions whilst listening to        music. The user can return to MusicStation at any time.    -   Exit and stop music—In this case MusicStation will stop music        playback and exit completely. The user would need to restart        MusicStation to use it subsequently.        8. Basic Concepts        8.1. Lineup

The third tab or Lineup is a key concept to a user's understanding ofMusicStation. It provides a permanent view of the user's currentselection of music. Any music the user selects for playing (and bydefault downloading if not yet on the handset) is added to the Lineup. Auser can select any album, playlist or individual track and add it tothe Lineup. Any track that is yet to complete downloading is greyed outand the percentage downloaded is displayed alongside. See section 12 formore information. See FIG. 97.

8.2. Playlists

There are several types of playlist within the MusicStation userinterface.

Playlist Description Private Playlist A playlist defined by the currentuser for their convenience. Shared Playlist A playlist created by a userand then shared with the community. Any user can listen, view and ratethis playlist. Editorial playlist A playlist created by the content teamrelated to a particular service. For example, playlists created tohighlight a group or story of note at the moment. AutomaticallyPlaylists which have been automatically generated by Generated PlaylistMusicStation. These may be personalised to the user. E.g. You Might Likeand Top Artists.8.3. Rating

See FIG. 98. MusicStation provides community features includingproviding recommendations for its users. To allow users to be involvedin this process many different items within the MusicStation interfacecan be rated. The following items can be rated:

-   -   Tracks    -   Albums    -   Artists    -   Playlists    -   Other Members

A user rates an item by selecting it in the interface and then selectingthe Rate option from the More menu. The user has three ratings to choosefrom for each item:

-   -   I love it    -   Neutral    -   I hate it

These ratings are collected from all users and are used by MusicStationto generate star-ratings for those items. These stars can be seen atvarious places throughout the interface and give the user base a view onthe relative popularity of each item. The user ratings are also used togenerate recommendations and charts, such as the Top Playlists list (GetNew Playlists screen).

8.4. Screen Updates

MusicStation includes a component called the Intelligent BackgroundDownloader. This component is responsible for downloading all music anddata to the handset. It runs in the background and delivers music forplayback, and content for all the dynamic menus. Because it runs in thebackground it can deliver updated content to any screen withoutinterfering with the user's enjoyment of MusicStation.

For example, news articles listed on the Inbox tab might be updatedwhile the user is listening to music so that when the user next switchesto the Buzz tab the latest articles will be there ready and waiting forthe user.

9. Top-Level Menus

The user interface is separated into four tabs. Each tab is focused on aparticular core function of MusicStation.

-   -   Home—provides the user access to all the content available in        MusicStation and to all the core functions such as Charts,        Search, etc.    -   Buzz—provides access to the community features and music news.    -   Lineup—displays the current queue of tracks queue for listening.    -   Playing—displays details of the track that is currently being        played.

The Home tab and Buzz tab consist of multiple screens arranged in ahierarchical menu structure. The following tables provide a list of theoptions in the top-level menus of the Home tab and Buzz tab and a crossreference to the section of this document in which they are described inmore detail. See FIGS. 99 and 100.

The Lineup and Playing tabs do not have any menus. They are a singlefixed view relating to current music. The Lineup displays a permanentview of the user's current selection of music for downloading andplaying. The Playing tab just displays the current track.

10. Home

10.1. Playlists

See FIG. 101. The Playlists screen gives the user access to playlists.The user can view and manage their Private and Shared Playlists. Theuser can also use the Get New Playlists options to view and downloadplaylists provided by the editorial/content team or by other users.

10.1.1. My Private Playlists

Private playlists are those which the user has created but not sharedwith the MusicStation community. Private playlists are listed underneaththe My Private Playlists heading. The user can decide to make any ofthese playlists public by selecting a private playlist and thenselecting the Share option from the More menu.

10.1.2. My Shared Playlists

See FIG. 102. Shared Playlists are those playlists which the user hasshared with the MusicStation community. Shared playlists are listedunderneath the My Shared Playlists heading. The user can decide to makeany of these playlists private again by selecting a shared playlist andthen selecting the Make Private option from the More menu.

10.1.3. Get New Playlists

See FIG. 103. The Get new playlists option provides access to EditorialPlaylists, Automatically Generated Playlists, and Shared Playlists fromother users. The user can view, play and rate any of these playlists.See FIG. 104.

The lists on these screens are updated nightly or weekly byMusicStation.

Menu item Description Top Playlists A list of the most popular SharedPlaylists within MusicStation. These are the playlists with the higheststar-rating. You Might Like A list of recommended playlists generatedusing the user's listening habits and rating activity. FeaturedPlaylists Playlists formed around some topic such as the season, aspecial event, an artist new release, etc Celebrity Playlists Playlistscreated by or inspired by celebrities.10.1.4. Create Playlist

See FIG. 105. Using the Create playlist option, the user can createprivate or shared playlists. The user provides a playlist name andselects an image for the playlist from a library of images. Oncecreated, the user can add tracks to the playlist using the Add toPlaylist options found throughout the interface. A user can also createa new playlist after selecting Add to Playlist.

10.2. Delete Playlist

The user may delete any of their private or shared playlists byhighlighting the playlist and selecting Delete from the More menu.

10.2.1. View Playlist

See FIG. 106. The user can view the tracks within a playlist. The userwill also see the image associated with the playlist, the playlist'stotal playtime and the number of tracks in the playlist. If the playlistis a Shared Playlist then its star-rating will also be shown.

At the bottom of each playlist is an ALL TRACKS option that a user canselect to add all the tracks in the playlist to a Lineup.

10.2.2. Rate Playlist

The user can rate Shared Playlists. The ratings provided by all usersand collectively used to generate Top playlists and You might like . . .lists which are then fed back to the users on their Get New Playlistsscreen. See section 8.3.

10.3. Artists

See FIG. 107. The Albums screen gives the user access to all albumsavailable in the MusicStation catalogue. The user can view Artists fromwhich they have downloaded tracks in the past. The user can use the Getnew artists option to view and listen to artists of general or personalinterest to this user.

10.3.1. My Top Artists

In the My Top Artists section of the Artists screen, the user can view aselective list of their artists from which they have downloaded tracks.The list will be composed of artists that the user has downloaded tracksfor. This provides the user with easy access to their favourite artists.It is generally all the artists they have downloaded tracks for but islimited (phone dependent) to ensure it does not get overly long.

10.3.2. Get New Artists

See FIG. 108. The Get new artists option provides access to lists ofArtists that have been generated by MusicStation, either automatically,using user listening habits and feedback or editorially. These are basedon two main categories: popular artists e.g. Top artists, Top Pop, TopRock etc and recommended artists e.g. You might like.

The lists on these screens are updated nightly or weekly byMusicStation.

Menu item Description Top Artists A listing of the most popular Artistsacross all users within MusicStation. You Might Like A list ofrecommended Artists generated utilising the user's listening habits andrating activity. Top [Genre] A list of the most popular artists inMusicStation broken down by genre. The list of options will include thetop 5 most popular genres in MusicStation.

See FIG. 109.

10.3.3. Artist Profile—View Artist

See FIG. 110. The user can view the artist profile including an image,the artist's MusicStation star-rating, the number of downloaded tracks,a list of the downloaded tracks and the total playtime of thesedownloaded tracks. From this screen the user can view and play alltracks or albums available for this artist.

10.3.4. Artist Profile—Get New Tracks

See FIG. 111. The user can view the list of all available tracks for theselected artist. From this screen the user can play and rate tracks.

10.3.5. Artist Profile—Get New Albums

See FIG. 112. The user can view the list of all available albums for theselected artist. From this screen the user can view, play and ratetracks from the album.

10.3.6. Rate Artist

The user may rate any artist using the Rate option from the More menu.See section 8.3.

10.4. Albums

See FIG. 113. The Albums screen gives the user access to all albumsavailable in the MusicStation catalogue. The user can view Albums fromwhich they have downloaded tracks in the past. The user can use the Getnew albums option to view and listen to albums of general or personalinterest to this user.

10.4.1. My Top Albums

In the My Top Albums section of the Albums screen, the user can view aselective list of their albums from which they have downloaded tracks.The list will be composed of albums that the user downloads from andlistens to frequently. This provides the user with easy access todownloaded tracks.

10.4.2. Get New Albums

See FIG. 114. The Get new albums option provides access to lists ofalbums that have been generated by MusicStation, either automatically,using user listening habits and feedback or editorially. These are basedon two main categories: popular albums e.g. Top artists, Top Pop, TopRock etc and recommended albums e.g. You might like, Just released. Theuser can play or view any easily.

The lists on these screens will updated nightly or weekly byMusicStation.

Menu item Description Top Albums A listing of the most popular Albumsacross all users within this service. You might like A list ofrecommended Albums calculated using the user's listening habits andrating activity. Just released A list of albums that have recently beenreleased. Top [Genre] Gives access to the most popular Albums for thisMusicStation service broken down by genre. The list of options willinclude the top 5 most popular genres for the service

See FIG. 115.

10.4.3. Album Home Page

See FIG. 116. The user can view the details of an album including thenumber of tracks on the album, the star-rating of the album and a tracklisting. The user can play individual tracks or all the tracks from thealbum. Using the ALL TRACKS option at the bottom of the Album home page,the user can select to play all tracks from the album.

10.4.4. Rate Album

The user can rate any album within the user interface. See section 8.3.

10.5. Tracks

See FIG. 117. The Tracks screen gives the user access to all tracksavailable from the MusicStation catalogue. The user can see a selectivelist of tracks, which they have downloaded in the past. The user canalso use the Get new tracks option to view and listen to tracks ofgeneral or personal interest to this user.

10.5.1. My Top Tracks

In the My Top Albums section of the Albums screen, the user can view aselective list of their downloaded tracks. The list will be composed oftracks that the user listens to frequently. All tracks in this list canbe listened to immediately. The user does not need network coverage tolisten to any of these tracks.

10.5.2. Get New Tracks

See FIG. 118. The Get new tracks option provides access to lists oftracks that have been generated by MusicStation, either automatically,using user listening habits and feedback or editorially. These are basedon two main categories: popular tracks e.g. Top Tracks and recommendedtracks e.g. You might like, Just released.

The lists on these screens will updated nightly or weekly byMusicStation.

Menu item Description Top tracks A listing of the most popular tracksacross all users within MusicStation. You Might Like A list ofrecommended tracks calculated using the user's listening habits andrating activity. Just Released A list of recently released tracks.10.5.3. Rate Track

The user may rate any track. See section 8.3.

10.5.4. Add Track to Playlist

The user may add any track to a playlist. During this process the usermay select an existing playlist or create a new one. See section 10.1.4Create playlist.

10.6. Charts

10.6.1. Charts Listing

See FIG. 119. The Charts screen provides a listing of charts generatedfrom the listening and rating habits of the users of this service. Aselection of charts is available including daily, weekly and monthly.

10.6.2. Chart Details

See FIG. 120. The user can view the details of a particular chartincluding its name, the chart's total playtime, the full sequentialtrack//artist listing for the chart and play any track from the chart.

10.7. Search

See FIG. 121.

10.7.1. Artist Search

See FIG. 122. The user may search for any artist within the MusicStationcatalogue by entering search terms into the Search text box andselecting the Artists radio button on the Search for menu. The user maythen view any artist profile returned by their search.

10.7.2. Track Search

See FIG. 123. The user may search for any track within the MusicStationcatalogue by entering search terms into the Search text box andselecting the Tracks radio button on the Search for menu. The user maythen play any track returned by their search.

10.7.3. Album Search

See FIG. 124. The user may search for any album within the MusicStationcatalogue by entering search terms into the Search text box andselecting the Albums radio button on the Search for menu. The user maythen view or play any album profile returned by their search.

10.8. Play Top Track

See FIG. 125. The Play Top Track option on the home menu adds a randomtrack from the list of tracks already on the handset to the end of theLineup. If the Lineup is empty then this track would start playingimmediately. Network coverage is not required for this option as thetracks are already downloaded.

10.9. Options

See FIG. 126. The Options screen provides the user with access togeneral information and options to control their MusicStationapplication.

10.9.1. Membership Status

See FIG. 127. This option displays the status of the user's membership.It will show renewal details such as the date and time of the nextrenewal, the renewal fee and the frequency of the renewal. The user canalso cancel their membership using the Cancel Membership option.

The following table describes the different stages in the membershipprocess.

Membership Description Free access Use of the application including anyfree preloaded content is unrestricted. Users can play free content andnavigate around MusicStation. Free trial When a user first attempts toperform a billable action access they will be asked to join MusicStationand normally (depending on the service configuration) be granted aperiod of free use during which they will have unlimited free access.The user can use all features of MusicStation including music downloadsand community. After the end of the free period the user will beginreoccurring charges at the normal rate. Subscribed The subscribingprocess involves the user accepting the to unlimited terms andconditions of the service. Once these are downloads accepted the userwill have immediate access to all the music within MusicStation for theperiod that they remain subscribed. Automatic If the user takes noaction then whilst subscribed the subscription user's subscription willbe automatically renewed as soon renewal as their renewal date/timecomes up. The user will not be informed of the renewal. If the user doesnot use MusicStation within a grace period of the renewal date thenaccess to all music (including that already downloaded onto the handset)will be prevented until a successful renew occurs. Unsubscribe The usermay choose to unsubscribe from the service at from anytime by selectingthe Cancel Membership option on unlimited the Membership Status screen.The user will remain downloads subscribed until their next due renewaldate/time at which point their music will no longer be accessible tothem.10.9.2. About

See FIG. 128. This screen displays information about the version ofMusicStation. It also displays the total number of tracks that the userhas currently downloaded to their handset.

10.9.3. Roaming Options

See FIG. 129. The user can configure the Roaming behaviour forMusicStation. When the phone is Roaming the user will experienceadditional charges when downloading tracks or when MusicStation updatesmenu items and images.

Option Description Roaming Status The phone's current roaming status.This will show Home if the user is not roaming and will show Roaming ifthe user is roaming. Track The user can set this option On to downloadtracks (with Downloads additional charges) when roaming without aprompt. The user set this option to Off to prevent the downloadingtracks when roaming or Ask to cause the following prompts. Menu & Theuser can set this option On to update menu items and picture updatespictures (with additional charges) when roaming without a prompt. Theuser set this option to Off to prevent menu and picture updates whenroaming or Ask to cause the following prompts.

If the Roaming behaviour for Menu & picture updates is set to Ask theywill be shown a warning message which will ask them to approve/denydownloads, updates and additional charges while roaming for a givensession. See FIG. 130.

When the user attempts to download a track while Roaming and the Roamingbehaviour for tracks is set to Ask they will be shown a warning messagewhich will ask them to approve/deny downloads, updates and additionalcharges while roaming. This action, approval/denial, will configure thesettings for the current session. See FIG. 131.

10.9.4. Language Selection

On a service which has multiple languages defined the user can changethe language for MusicStation. On changing the language the user will beprompted to restart MusicStation. Confirming the action closesMusicStation. See FIG. 132.

10.9.5. Terms & Conditions

This screen displays a WAP link to the general and service-specificterms and conditions for this MusicStation service. See FIG. 133.

10.9.6. Max Memory Card Use

The user can select the maximum percentage of the memory card thatMusicStation will use for storing music and data. The user can set alower value to leave more room for other uses of the phone (e.g.photos).

11. Buzz

See FIG. 134. The user may choose to create a Buzz profile. This allowsthem to take part in the full set of MusicStation community features. Ifthe user does not have a Buzz profile then they are unable tocommunicate with other members.

From the Buzz screen users can view their profile, read news articlesand access messages in their Inbox.

11.1. Join the Buzz

See FIG. 135. When the user attempts to use a community feature thatrequires a Buzz profile then they are redirected to the Join the Buzzscreen and are prompted for a member name they want to register under.They many enter a name and select an image, which will form theirprofile. The entered name must be unique.

If the Member name is not available then an alternative will besuggested which they may accept or modify.

The user may edit their profile at any time from the My Profile screen.

They may optionally also choose an image and provide a shortcatchphrase. These items are displayed whenever other users view thismember's profile.

11.2. Buzz Members

11.2.1. My Profile

See FIG. 136. The My Profile screen gives the user access to all aspectsof the MusicStation community along with their own personalised content.Before they have created a profile the user will be able to access theNews items in the Buzz tab, and view Cool Members and Buzz playlists butwill not be able to add friends or send recommendations.

Once they have registered this screen will show

-   -   Member name    -   Image    -   Star-rating—indication of how other users have rated them.    -   Listens—number of times other users have listened to one of this        member's shared playlists.    -   Number of Friends    -   Catchphrase

From the My Profile screen they can view Cool Members, Buzz Playlistsand a list of their Buzz Friends.

Menu item Description Cool members Popular members, featured members andmembers that this user may relate to based on similar listening andrating habits. Buzz playlists Popular playlists, featured playlists,celebrity playlists and playlists that this user may enjoy based onlistening and rating habits. My Friends A list of users that that thisuser has added as a friend.11.2.2. Edit My Profile

At any time after registering as a Member the user may modify details oftheir member profile using the Edit My Profile option from the Moremenu. See FIG. 137.

This allows the user to modify their catchphrase and change their image.It also allows them to specify whether they want their profile to bevisible to other users, and if they want their Top Tracks to be listedon their profile screen.

11.2.3. Cool Members

See FIG. 138. The Cool Members option on the My Profile screen gives theuser access to various lists of Members.

Menu item Description Top Members The most popular members inMusicStation. You Might Like A list of members that this user may relateto based on similar listening and rating habits. Featured Members A listof editorially selected members.

The user may click on any member in these lists to view that member'sprofile (section 11.2.4).

11.2.4. Buzz Playlists

See FIG. 139. The Buzz Playlists option on the My Profile screen givesthe user access to various playlists including Editorial Playlists,Automatically Generated Playlists, and Shared Playlists from otherusers. The user can view, play and rate any of these playlists.

See FIG. 140. The lists on these screens are updated nightly or weeklyby MusicStation.

Menu item Description Top Playlists A list of the most popular SharedPlaylists within MusicStation. These are the most popular playlistsbased on star-rating and listens. You Might Like A list of recommendedplaylists generated using the user's listening habits and ratingactivity. Featured Playlists Editorially selected playlists formedaround some topic such as the season, a special event, an artist newrelease, etc Celebrity Playlists Playlists created by or inspired bycelebrities.11.2.5. My Friends

See FIG. 141. The My Friends option on the My Profile screen gives theuser access to a list of the users they have added as a friend and anypending friend requests. See section 11.3 for more information onFriends.

11.2.6. View Another Member Profile

See FIG. 142. This screen displays the details of another Member. Amember's profile can only be viewed by another user if that member hasenabled the option which makes their profile visible on the Edit MyProfile screen.

The Member Profile screen displays a member's:

-   -   Member name    -   Image    -   Star-rating    -   Listens (number of times other users have listened to one of        this member's shared playlists)    -   Number of Friends    -   Catchphrase    -   A list of their Shared Playlists    -   My Top Tracks (This user's 5 top tracks)

From this screen a user may:

-   -   View this member's shared playlists    -   View this member's top 5 tracks and play them (This option will        be shown only if the other member has enabled the option to Show        my top tracks when configuring their member profile using the        Edit my profile option. See section 11.2.2)    -   Request to add this user as a Friend    -   Rate this member        11.3. Friends

Buzz Members can recommend items to other Members to which they may alsoattach a message. However they are only allowed to do this with Memberswho they have added to their list of Friends. Users can add Friends bysending Friend Requests to other Buzz Members or confirming requestsfrom other members.

A list of Friends may be viewed from their My Profile screen (seesection 11.3.2).

All recommendations can be viewed in the Inbox on the Buzz tab. (seesection 11.4)

11.3.1. Request to Add a Member as Friend

See FIG. 143. Anywhere a member is listed in the user interface a usermay select the Add as Friend option from the More menu in order to senda request to that Member to become their Friend. The user may enter amessage, which is sent along with the Friend Request. To send themessage the user selects the Send option from the More menu. The friendrequest will be sent to the other member who then has the option ofaccepting or denying the request.

11.3.2. View List of My Friends

See FIG. 144. A user may view their list of friends at any time by goingto their My Profile screen and selecting the My friends option.

11.3.3. View List of My Pending Friend Requests

See FIG. 145. A user may view the list of friend requests that they havesent but which have not yet been responded to under the Pending friendrequests heading on the My Friends screen available from their MyProfile screen (see section 11.3.2).

11.3.4. Request to Add Friend by Name

See FIG. 146. If the user knows the name of a member who they want toadd as a friend, they may send a Friend Request to that Member byentering that name using the Add friend by name option, accessed fromthe My Friends menu option from their My Profile screen (see section11.3.2).

11.3.5. Request to Add Friend by Phone Number

See FIG. 147. If the user knows the mobile phone number of a member whothey want to add as a friend, they may send a Friend Request to thatmember by entering that name using the Add friend by phone no option,accessed from the My Friends menu option from their My Profile screen(see section 11.3.2).

11.3.6. Send Playlist Recommendation to Friend

Anywhere where a playlist is listed in MusicStation the user may use theSend to Friend option from the More menu to send a message to one ormore Friends recommending it to them. The recommendation message arrivesin that Friend's Inbox (section 11.4.3).

11.3.7. Send Artist Recommendation to Friend

Anywhere where an artist is listed in MusicStation the user may use theSend to Friend option from the More menu to send a message to one ormore Friends recommending it to them. The recommendation message arrivesin that Friend's Inbox (section 11.4.4).

11.3.8. Send Album Recommendation to Friend

Anywhere where an album is listed in MusicStation the user may use theSend to Friend option from the More menu to send a message to one ormore Friends recommending it to them. The recommendation message arrivesin that Friend's Inbox (section 11.4.5).

11.3.9. Send Track Recommendation to Friend

Anywhere where a track is listed in MusicStation the user may use theSend to Friend option from the More menu to send a message to one ormore Friends recommending it to them. The recommendation message arrivesin that Friend's Inbox (section 11.4.6). See FIG. 148.

11.4. Inbox

The Inbox displays messages and recommendations which have arrived fromthe user's friends who are also users of this MusicStation service. Seesection 11.3 for an introduction to MusicStation's Friendsfunctionality.

Messages are downloaded in the background by the Intelligent BackgroundDownloader and appear on in the Inbox without any specific interactionfrom the user.

11.4.1. Inbound Friend Request Message

See FIG. 149. When another Member requests to add this user as a friendthen a Friend Request will arrive in this user's Inbox. This user canrespond to this request in one of four ways.

Selection Action Approve This user is added to the other member's Friendlist. The other member is added to this user's Friend list. Deny Thisuser is not added to the other member's friend list. The other member isnot added to this user's Friend list. Block This user is not added tothe other member's friend list. The other member is not added to thisuser's Friend list. All future friend requests from the other memberwill be ignored. Report This user is not added to the other member'sfriend list. The abuse other member is not added to this user's Friendlist. All future friend requests from the other member will be ignored.An abuse notification will be raised with the MusicStation support team.

When this user responds, their response will be delivered to the othermember's Inbox. These responses are described in section 11.4.2.

11.4.2. Response from Friend Request

See FIG. 150. When this user sends a friend request to another memberthat member has the option to accept or deny the request. Their responseis returned to this user and displayed in the Inbox. The three possibleresponses to a friend request are listed below.

Title shown in Inbox Action Friend The other member has accepted thefriend request. The other Request member is added to this user's friendlist and this user is Accepted added to the other member's Friend list.They can now send each other tracks, playlists and messages. Friend Theother member has denied the friend request. No change Request to eithermember's friends lists. This user can resubmit Denied their friendrequest. Friend The other member has blocked all friend requests fromthis Request user. This user will have all friend requests to this otherBlocked member blocked automatically. The other member will never seerequests from this member again.11.4.3. Inbound Playlist Recommendation from Friend

See FIG. 151. When a friend sends a playlist recommendation to this user(section 11.3.6) then the recommendation message will appear in thisuser's Inbox. The user can open the message and click on the hyperlinkin the message to view the playlist.

11.4.4. Inbound Artist Recommendation from Friend

See FIG. 152. When a friend sends an artist recommendation to this user(section 11.3.7) then the message will appear in this user's Inbox. Theuser can open the message and click on the hyperlink in the message togo straight to the artist profile screen.

11.4.5. Inbound Album Recommendation from Friend

See FIG. 153. When a friend sends an album recommendation to this user(section 11.3.8) then the message will appear in this user's Inbox. Theuser can open the message and click on the hyperlink in the message togo straight to the album screen. They may also click on the artist nameto go straight to the artist profile screen.

11.4.6. Inbound Track Recommendation from Friend

See FIG. 154. When a friend sends a track recommendation to this user(section 11.3.9) the recommendation message will appear in this user'sInbox. The user can open the message and click on the hyperlink in themessage to add the track to their Lineup.

11.5. News

11.5.1. List of Editorial Articles

The News section displays a constantly updating list of news articles.Typically six articles will be displayed broken down with two articlesof international general interest, two stories of local general interestand two stories based on the listening and rating behaviour of thisuser. This breakdown can be configured for the demands of the particularservice.

The list of articles is updated by the Intelligent Background Downloaderduring normal use of MusicStation. Articles are added to this list inthe background and can be viewed immediately by the user when they nextnavigate to the Buzz tab.

11.5.2. View Article

See FIG. 155. To view the article the user selects the article from thelist and clicks the joystick button or selects the Open option from theMore menu. The article body text is displayed beneath a headline andrelevant image.

11.5.3. Hyperlinks in an Article

See FIG. 156. Stories may contain hyperlinks to other screens withinMusicStation. For example, an announcement of a new album release couldinclude links to the relevant artist and album screens. Hyperlinks aredisplayed in blue in the article screens. The user may navigate straightto the album or artist by selecting the hyperlink and clicking thejoystick button. As a user scrolls up and down in an article usingup/down on the joystick the active hyperlink moves between successivehyperlinks.

12. Lineup

See FIG. 157. The Lineup is a concept central to the MusicStationclient. It is the current playlist of tracks a user has queued forlistening. Songs on the playlists will be played in sequence. At anytime, the contents of the Lineup can be viewed on the Lineup screen.

The current track is the track in the Lineup that is currently playing.The current track is highlighted with a small blue pointer on the left.

See FIG. 158. When no tracks have been added to the Lineup the optionPlay top track is displayed. This option randomly adds and plays a Toptrack to the Lineup. The Top tracks have already been downloaded andwill play immediately.

12.1. Track Download Status

See FIG. 159. Tracks which have not yet been downloaded will bedownloaded in the background. Tracks which are currently downloading orwaiting to download are shown in a grey font. The progress of adownloading track is displayed as a percentage from 0-100%.

Tracks play in sequence from the Lineup. If a track is reached which hasnot yet finished downloading then playback will skip that track and goonto the next track which has been downloaded. Once that track has beendownloaded then it will be available to play.

MusicStation intelligently manages the downloading of tracks in thebackground to optimise the user's experience and ensure that musicplayback is continuous and the user hears a continuous flow of music.

Tracks download one at a time, although depending on how tracks havebeen added to the Lineup and whether the user interrupted downloads byexiting the application, there may be multiple tracks shown in apartially downloaded state.

While tracks are downloading the user is able to listen to alreadydownloaded music and is free to navigate around the rest of theMusicStation user interface.

Partially downloaded tracks are saved when MusicStation exits andcontinue downloading later from where they left off.

12.2. Save as Playlist

See FIG. 160. The user can save the current Lineup to a playlist. Tosave the current Lineup as a playlist the user selects Save as playlistfrom the More menu. They can choose to save the current Lineup as a newplaylist or add the tracks to an existing playlist. This saved playlistis saved on the handset and centrally.

12.3. Remove from Lineup

See FIG. 161. The user can remove a track from the Lineup. To remove atrack from the Lineup the user selects the track and then selects Removefrom the More menu. If the user removes the Current Track then the nextavailable track in the current playlist will be played.

12.4. Clear Lineup

See FIG. 162. The user can clear the current Lineup, removing all tracksfrom it. To clear the Lineup the user selects Clear from the More menu.Music playback will stop.

12.5. Jump to Track in Current Lineup and Play

The user can select another track to play from the current Lineup. To dothis the user navigates to the track using the joystick. The user canstart the track by pressing the joystick button or selecting Play fromthe More menu. MusicStation will start to play the selected track. Onlydownloaded tracks can be played.

12.6. Adding Music to the Lineup

The user navigates through MusicStation's music catalogue and can selecttracks, albums, artists or playlists to add to the Lineup.

Any track can be added to the Lineup by selecting the track with thejoystick. Any playlist, album or track can be added by selecting Add toLineup from the More menu.

If the Lineup is empty then that item will start playing. If the Lineupalready contains tracks then the added item will be queued at the end ofthe Lineup. The user can view the tracks which they have added by goingto the Lineup tab.

Tracks, which have not been downloaded, are added to the Lineup beforethey are downloaded. MusicStation will intelligently manage download ofitems in the background allowing the user to enjoy a continuous flow ofmusic.

Other options for adding items to the Lineup are provided on the Moremenu. These options such as Play next, Play ASAP or Play now aredescribed in more detail below.

If a user adds a track to the Lineup that has to be downloaded and thereare currently no other tracks in the Lineup then the user is promptedwith an option to add a top track for immediate playback. See FIG. 163.

12.6.1. Add to Lineup

When a user is browsing the MusicStation catalogue they can select Addto Lineup from the More menu to add a track, playlist, a track by aselected artist or album to the Lineup.

Item Action Playlist The user can select any playlist in the interfaceand add all tracks from that playlist to the Lineup. The user may alsoadd individual tracks from that playlist to the end of the Lineup. AlbumThe user can select any album in the interface and add all tracks fromthat album to the Lineup. The user may also add individual tracks fromthat album to the end of the Lineup. Artist The user can select anindividual track or album from a selected artist to the end of theLineup. Track The user can select any track and add it to the end of theLineup.12.6.2. Play Next

When a user is browsing the MusicStation catalogue they can select Playnext from the More menu to insert a track, playlist, a track by aselected artist or album into the Lineup after the track that iscurrently playing.

Item Action Playlist The user can select any playlist and instructMusicStation to insert it into the Lineup directly after the track thatis currently playing. The playlist will then start playing once thecurrent track has finished. Album The user can select any album andinstruct MusicStation to insert it into the Lineup directly after thetrack that is currently playing. The playlist will then start playingonce the current track has finished. Artist The user can select anindividual track or album from a selected artist and instructMusicStation to insert it into the Lineup directly after the track thatis currently playing. The selected track will then start playing oncethe current track has finished. Track The user can select a track andinstruct MusicStation to insert it into the Lineup directly after thetrack that is currently playing. The selected track will then startplaying once the current track has finished.12.6.3. Play Now

When a user is browsing the MusicStation catalogue they can select Playnow from the More menu to insert a track which has been downloaded intothe Lineup. The track which is currently playing will be interrupted andthe selected track will start playing and replace the current track.

Item Action Track The user can select any song, which has already beendownloaded, and instruct MusicStation to insert it into the Lineupimmediately. The track which is currently playing will be interruptedand the selected track will start playing and replace the current track.12.6.4. Play ASAP

Play ASAP stands for Play As Soon As Possible. When a user is browsingthe MusicStation catalogue they can select Play ASAP from the More menuto insert a track, playlist, a track by a selected artist or an album,which has not been downloaded into the Lineup. As soon as it isavailable the track, playlist, track by a selected artist or an albumwill replace the track that is currently playing.

When a user is browsing the MusicStation catalogue if the track,playlist, a track by a selected artist or album has not already beendownloaded they will be able to select the Play ASAP option from theMore menu.

Item Action Playlist The user can select any playlist and instructMusicStation to play that playlist as soon as possible. The playlistwill be inserted into the Lineup and will interrupt the track that iscurrently playing as soon as it is available. If one or more tracks ofthat playlist have already been downloaded to the handset the currenttrack would be interrupted and the playlist would start playingimmediately. If the playlist must first be downloaded then the firsttrack would be downloaded and as soon as it had finished downloading itwould replace the current track and start playing. The remaining tracksfrom the playlist will download in the background and be queued as theybecome available. Album The user can select any album and instructMusicStation to play that album as soon as possible. The album will beinserted into the Lineup and the first available track will interruptthe track that is currently playing as soon as it is possible. If one ormore tracks of that album have already been downloaded to the handsetthe current track would be interrupted and the playlist would startplaying immediately. If the album must first be downloaded then thefirst track would be downloaded and as soon as it had finisheddownloading it would interrupt the current track and start playing. Theremaining tracks from the playlist will album in the background and bequeued as they become available. Artist The user can select anindividual track by a selected artist and instruct MusicStation to playthat track as soon as possible. The selected track will be inserted intothe Lineup and will interrupt the track that is currently playing assoon as it is available. Track The user can select any track andinstruct MusicStation to play that track as soon as possible. The trackwill be inserted into the Lineup and will interrupt the track that iscurrently playing as soon as it is available.13. Playing

See FIG. 164.

13.1.1. Playing Screen

The Playing tab displays the details of the track that is currentlyplaying.

Item Description Track Name The name of the track currently playing.Track Artist The name of the artist for the track. Track Album The nameof the album the track is from. Album Image An image showing the coverfor the album the track is from. Lineup position The track's positionwithin the Lineup. Lineup count The number of tracks in the currentLineup. Current The current position of playback of the current track inplaytime minutes:seconds Playtime The total length of the current trackin minutes:seconds.13.1.2. Playing Actions

The user can perform the following actions on the Playing tab.

Action Play Click the joystick button or press the [5] key. Pause Clickthe joystick button or press the [5] key. Next Track Press the [6] key.Restart Track Press the [4] key. Previous Track Press the [4] key twice.Fast Forward Press and hold the [6] key. Rewind Press and hold [4] key.Add to Playlist Select Add to playlist from the More menu. Rate SelectRate from the More menu.Appendix 2: Context Sensitive Menus

The following appendix details the options available on the More menuwhen viewing menus and objects in MusicStation.

Playlists Object More Options Playlist, Private Open Add to Lineup Playnext Play ASAP Send to Friend Delete Share Help Minimise Close Playlist,Shared Open Add to Lineup Play next Play ASAP Rate Send to Friend DeleteMake Private Help Minimise Close Playlist, Buzz Open Add to Lineup Playnext Play ASAP Rate Send to Friend Help Minimise Close

Tracks Object More Options Track Add to Lineup . . . on a SharedPlaylist Play next . . . on an album Play ASAP/Play now* . . . on anartist screen Add to playlist . . . on a chart Rate . . . in searchresults Send to Friend Artist Profile Details Help Minimise *Track notdownloaded || Track Close downloaded Track Add to Lineup . . . on aPrivate Playlist Play next Play ASAP/Play now* Add to playlist RemoveRate Send to Friend Artist Profile Details Help Minimise *Track notdownloaded/Track Close downloaded Track Add to Lineup . . . in My TopTracks Play next Play ASAP/Play now* Add to playlist Delete Rate Send toFriend Artist Profile Details Help Minimise *Track not downloaded/TrackClose downloaded

Buzz Object More Options Buzz Open . . . Buzz main screen Send/ReceiveHelp Minimise Close Inbox Open . . . Buzz main screen DeleteSend/Receive Help Minimise Close Buzz Profile Edit my profile Open HelpMinimise Close Buzz member Open . . . in a list of members Add asFriend** Help Minimise **will be greyed out if member is Close already afriend Friend Open . . . in a list of friends Remove Help Minimise ClosePlaylist Open . . . on a buzz member profile screen Add to Lineup Playnext Play ASAP Rate Send to Friend Add as Friend** Help Minimise **willbe greyed out if member is Close already a friend Track Add to Lineup .. . on a buzz member profile screen Play next Play ASAP/Play now* Add toplaylist Rate Send to Friend Artist Profile Details Add as Friend**Help * Track not downloaded/Track Minimise downloaded Close **will begreyed out if member is already a friend

Lineup + Playing Object More Options Lineup Play Top Track . . . notracks Help Minimise Close Lineup Play . . . tracks Rate Remove ClearSend to Friend Save as playlist Add to playlist Pause Help MinimiseClose Playing Add to playlist Rate Help Minimise Close

Other Object More Options Artist Open . . . in a list of artists RateSend to Friend Help Minimise Close Album Open . . . in a list of albumsAdd to Lineup Play next Play ASAP Rate Send to Friend Help MinimiseClose Chart Open Add to Lineup Play next Play ASAP Help Minimise CloseSearch OK . . . do search Reset search Help Minimise Close

Generic Object More Options Generic Top Level menu item Open HelpMinimise Close Generic Actionable menu item <<Do action>> e.g. Createplaylist e.g. Create playlist Help Minimise Close Menu item (default)Help Minimise Close

The invention claimed is:
 1. A portable wireless computing devicecomprising: a hardware processor programmed with a software applicationembodied on a non-transitory storage medium, that enables an end-user tointeract with other users in which (a) the software application allowsthe end-user to, over a wireless HTTP connection, create on a remoteserver one or more user accounts with associated profiles for thatend-user; and (b) the software application allows the end-user to, overthe wireless HTTP connection, view profiles created by other users of aservice; and (c) the software application allows the end user to, overthe wireless HTTP connection, interact with other users of the service;and (d) the software application allows the end-user to, over thewireless HTTP connection, send and receive messages to and from otherusers of the service; and (e) the software application allows theend-user to, over the wireless HTTP connection, link his or her useraccount on the remote server to user accounts on the remote server ofother users of the service wherein the software application is a musicapplication and uses track meta-data that is formed as a separatemeta-data layer and defines attributes of tracks, the meta-data beingexternal to a music track to make sharing and browsing of trackinformation possible without needing to distribute the related musictrack files.
 2. The device of claim 1 wherein a user is required toregister, over a wireless HTTP connection, a unique username, handle oridentifier with the service in order to access the service.
 3. Thedevice of claim 1 wherein a user's profile includes one or more of ausername; a profile image, whether provided by the user or by theservice; one or more additional images; some text provided by the user,any additional text and/or metadata defined by the service.
 4. Thedevice of claim 1 wherein user interactions include sending informationover a wireless HTTP connection to other users of the service orreceiving information from other users of the service.
 5. The device ofclaim 4 wherein information shared over a wireless HTTP connection withother users comprises one or more of: whether or not the user iscurrently logged into the service; messages; requests to link hisaccount with one or more other designated users; the list of profiles towhich the user has linked his profile; the media content which the useris and/or has been listening to, watching or reading; recommendationsof, or related to, media content; playlists of media content; the user'sfavourite media content; the user's ratings of one or more items;digital media content files or any other files; any other informationdeemed suitable for sharing with other users.
 6. The device of claim 5wherein media content comprises one or more of: music, books, movies,television shows, websites, radio, artists, albums, composers,directors, actors or any other video, audio and/or text content or anyother media content, whether stored digitally or otherwise.
 7. Thedevice of claim 1 wherein the user can control whether or not hisprofile is visible to other users of the service.
 8. The device of claim1 wherein the user can control which information from his profile isvisible to other users of the service.
 9. The device of claim 1 whereinthe user is able over a wireless HTTP connection, to search and/orbrowse the service for other users, media content or any otherinformation.
 10. The device of claim 1 wherein (a) the user is able toview the profiles of other users, including text provided by those otherusers and (b) when viewing the profile of another user, B, the firstuser, A, is able to view that information on B's profile which B has,whether implicitly or explicitly, made visible to user A.
 11. The deviceof claim 1 wherein the user can provide ratings for media content, otherusers of the service or for any other items.
 12. The device of claim 11wherein the user's ratings consist of one or more of whether the userlikes the item, whether the user dislikes the item, how the user ratesthe item on a given scale or any other applicable explicit ratingmechanism.
 13. The device of claim 1 wherein a request to link profileson the service can be responded to by accepting that request, rejectingthat request or blocking all further messages from the originating user.14. The device of claim 1 wherein messages, whether from other users orfrom the service itself, are shown as notification messages.
 15. Thedevice of claim 1 wherein messages, whether from other users or from theservice itself, are stored on a remote server such that when the user isonline the user can collect those messages which were delivered into theuser's “inbox” while the user was not connected to the service.
 16. Thedevice of claim 1 wherein messages, whether from other users or from theservice itself, are able to have associated attached items which theuser can access on the same basis as that message.
 17. The device ofclaim 16, wherein the attached items consist of one or more of a digitalimage file, a digital audio file, a digital video file, a text file, anexecutable file, a recommendation of media content, a web siteidentifier, Universal Resource Identifier (URL) or address, a requestfrom another user to link user accounts or an acknowledgement of such arequest or any other digital file.
 18. The device of claim 1 whereinmessages or other shared information may be filtered to remove orobfuscate terms deemed to be potentially offensive.
 19. The device ofclaim 1 wherein the service provides over a wireless HTTP connection,recommendations to the user of people, media content or any other itemswhich the user might like, based on the user's viewing, listening and/orpurchasing history, on the viewing, listening and/or purchasing historyof any other users or on any other criteria.
 20. The device of claim 1wherein the service provides over a wireless HTTP connection,recommendations to the user of other users the user might wish tointeract with based on shared media content preferences, shared linkedfriends or on any other criteria.
 21. The device of claim 1 wherein theservice provides over a wireless HTTP connection, information to theuser comprising one or more of news stories, media content, editoriallymaintained playlists of media content, personalized news,recommendations of media content or any other information.
 22. Thedevice of claim 1 wherein the software application resides wholly on thedevice or wholly on the remote server or some combination of the two.23. The device of claim 1 wherein the software application communicateswith the remote server wirelessly via one or more of CSD, GPRS, 2G,2.5G, 3G, WAP, SMS, Bluetooth, Infrared, Wi-Fi, WiMAX, the Global MobileNetwork or via any other wireless communications technology.
 24. Thedevice of claim 1 wherein the software application uses a multithreadedarchitecture to balance the computational demands of network access; andthe computational demands of one or more of: a user interface of theapplication; a DRM program; media operations.
 25. The device of claim 1where the service is a social network service.
 26. The device of claim25 where the software application displays to the end-user the number offriends linked with that end-user.
 27. The device of claim 1, the devicebeing a mobile telephone.
 28. Software application embodied on anon-transient storage medium, wherein the software application isexecutable on a portable wireless computing device, wherein the softwareapplication enables an end-user to interact with other users and inwhich (a) the software application allows the end-user to, over awireless HTTP connection, create on a remote server one or more useraccounts with associated profiles for that end-user; and (b) thesoftware application allows the end-user to, over the wireless HTTPconnection, view profiles created by other users of a service; and (c)the software application allows the end-user to, over the wireless HTTPconnection, interact with other users of the service; and (d) thesoftware application allows the end-user to, over the wireless HTTPconnection, send and receive messages to and from other users of theservice; and (e) the software application allows the end-user to, overthe wireless HTTP connection, link his or her user account on the remoteserver to user accounts on the remote server of other users of theservice wherein the software application is a music application and usestrack meta-data that is formed as a separate meta-data layer and definesattributes of tracks, the meta-data being external to a music track tomake sharing and browsing of track information possible without needingto distribute the related music track files.
 29. Method of enabling anend-user of a portable wireless computing device programmed with asoftware application embodied on a non-transitory storage medium, tointeract over a wireless HTTP connection, with other users of otherdevices, the portable wireless computing device in communication with aremote server over a wireless HTTP connection, the method comprising thesteps of: (i) the software application allowing the end-user to, overthe wireless HTTP connection, create one or more user accounts withassociated profiles on the remote server; (ii) the software applicationallowing the end-user to, over the wireless HTTP connection, display onthe device profiles created by other users of a service; (iii) thesoftware application allowing the end-user to communicate interactionsover the wireless HTTP connection, between the user and other users ofthe service; (iv) the software application allowing the end-user to sendand receive messages over the wireless HTTP connection, to and from theuser and other users of the service, and (v) the software applicationallowing the end-user to, over the wireless HTTP connection link theuser account on the remote server to user accounts on the remote serverof other users of the service wherein the software application is amusic application and uses track meta-data that is formed as a separatemeta-data layer and defines attributes of tracks, the meta-data beingexternal to a music track to make sharing and browsing of trackinformation possible without needing to distribute the related musictrack files.
 30. The device of claim 1 wherein the software applicationuses a multitasking architecture to balance the computational demands ofnetwork access; and the computational demands of one or more of: a userinterface of the software application; a DRM program; media operations.